Beispiel #1
0
        public override void DoMagicAttack(Attack baseAttack)
        {
            var castDir = baseAttack.BetterAttackDir();

            duration      = baseDuration * _Effectiveness * (_Quality == RuneQuality.Ancient ? 2 : 1);
            speedModifier = _Quality == RuneQuality.Dark ? darkSpeedMod : baseSpeedMod;
            maxHealth     = baseAttack.GetCharacter().GetHealth();

            var vfx       = (from GameObject prefab in Resources.FindObjectsOfTypeAll <GameObject>() where prefab.name == vfxName select prefab).FirstOrDefault();
            var instanced = GameObject.Instantiate(vfx, baseAttack.GetCharacter().GetCenterPoint(), Quaternion.LookRotation(castDir));
            var actualVfx = instanced.transform.Find("flames_world");

            actualVfx.transform.localPosition = Vector3.zero;
            var particles     = actualVfx.GetComponent <ParticleSystem>();
            var shapeSettings = particles.shape;

            shapeSettings.angle = baseAngle * (_Quality == RuneQuality.Ancient ? 2 : 1);

            var project = new ConeVolumeProjectile
            {
                m_range = baseRange,
                m_actionOnHitCollider = ApplyFear,
                m_attackSpread        = baseAngle * (_Quality == RuneQuality.Ancient ? 2 : 1)
            };

            project.Cast(baseAttack.GetAttackOrigin(), castDir);
        }
Beispiel #2
0
        public override void DoMagicAttack(Attack baseAttack)
        {
            castDir = baseAttack.BetterAttackDir();
            force   = baseForce * _Effectiveness * (_Quality == RuneQuality.Dark ? 3 : 1);

            var vfx = ConstructGameObject();

            if (_Quality == RuneQuality.Ancient)
            {
                var particles     = vfx.GetComponent <ParticleSystem>();
                var mainSettings  = particles.main;
                var shapeSettings = particles.shape;
                mainSettings.startLifetime = 2 * mainSettings.startLifetime.constant;
                mainSettings.duration     *= 2;
                shapeSettings.angle       *= 2;
            }
            GameObject.Instantiate(vfx, baseAttack.GetCharacter().GetCenterPoint(), Quaternion.LookRotation(castDir));

            var project = new ConeVolumeProjectile
            {
                m_range = baseRange * (_Quality == RuneQuality.Ancient ? 2 : 1),
                m_actionOnHitCollider = DoPushback,
                m_attackSpread        = baseAngle * (_Quality == RuneQuality.Ancient ? 2 : 1)
            };

            project.Cast(baseAttack.GetAttackOrigin(), castDir);
        }
Beispiel #3
0
 public override void DoMagicAttack(Attack baseAttack)
 {
     if (_Quality == RuneQuality.Dark)
     {
         var project = new ConeVolumeProjectile
         {
             m_actionOnHitCollider = DoLightningDamage,
             m_attackSpread        = 25,
             m_range = 7.5f
         };
         var baseVfx = (from GameObject prefab in Resources.FindObjectsOfTypeAll <GameObject>() where prefab.name == lightningVfxName select prefab).FirstOrDefault();
         var vfx     = baseVfx.transform.Find("lightning").gameObject;
         GameObject.Instantiate(vfx, baseAttack.GetAttackOrigin().position, Quaternion.LookRotation(baseAttack.BetterAttackDir()));
         project.Cast(baseAttack.GetAttackOrigin(), baseAttack.BetterAttackDir());
     }
 }