From 0e63c4a2c6dec8dfa260501fb7d73750261ea7b7 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Sat, 25 Nov 2023 18:39:02 +0800 Subject: + init --- Assembly_CSharp/FlameThrower.cs | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Assembly_CSharp/FlameThrower.cs (limited to 'Assembly_CSharp/FlameThrower.cs') diff --git a/Assembly_CSharp/FlameThrower.cs b/Assembly_CSharp/FlameThrower.cs new file mode 100644 index 0000000..d415d88 --- /dev/null +++ b/Assembly_CSharp/FlameThrower.cs @@ -0,0 +1,68 @@ +using UnityEngine; + +public class FlameThrower : Tower +{ + [SerializeField] + private ParticleSystem flames; + + public bool flaming; + + private bool hasMana = true; + + [SerializeField] + private AudioSource audioS; + + private bool soundPlaying; + + protected override void Update() + { + if (hasMana && currentTarget != null && !flaming) + { + flames.Play(); + PlaySound(onOff: true); + flaming = true; + } + else if (!hasMana || (currentTarget == null && flaming)) + { + flames.Stop(); + PlaySound(onOff: false); + flaming = false; + } + base.Update(); + } + + protected override void Fire() + { + if (consumesMana) + { + int manaCost = (int)((float)base.damage * manaConsumptionRate); + if (!ResourceManager.instance.CheckMana(manaCost)) + { + hasMana = false; + return; + } + ResourceManager.instance.SpendMana(manaCost); + hasMana = true; + } + RaycastHit[] array = Physics.SphereCastAll(muzzle.position, base.range / 6f, muzzle.transform.forward, base.range * 1.5f, enemyLayerMask, QueryTriggerInteraction.Collide); + foreach (RaycastHit raycastHit in array) + { + raycastHit.collider.GetComponent()?.TakeDamage(towerType, base.damage, base.healthDamage, base.armorDamage, base.shieldDamage, base.slowPercent, base.bleedPercent, base.burnPercent, base.poisonPercent, base.critChance, base.stunChance); + } + } + + private void PlaySound(bool onOff) + { + if (onOff && !soundPlaying) + { + audioS.volume = OptionsMenu.instance.masterVolume * OptionsMenu.instance.sfxVolume; + audioS.Play(); + soundPlaying = true; + } + else if (!onOff && soundPlaying) + { + audioS.Stop(); + soundPlaying = false; + } + } +} -- cgit v1.1-26-g67d0