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); }
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); }
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()); } }