summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/HotOilTower.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-20 22:36:58 +0800
committerchai <215380520@qq.com>2024-05-20 22:36:58 +0800
commita22c505984697881f5f911a165ee022087b69e09 (patch)
treed3c030aef1ae9b8a01c889dd2902bb1e3324e72b /Thronefall_v1.0/Decompile/HotOilTower.cs
parent4a4cc82d069b26bc4d4532e73860f86b211ca239 (diff)
*renameHEADmaster
Diffstat (limited to 'Thronefall_v1.0/Decompile/HotOilTower.cs')
-rw-r--r--Thronefall_v1.0/Decompile/HotOilTower.cs97
1 files changed, 97 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/HotOilTower.cs b/Thronefall_v1.0/Decompile/HotOilTower.cs
new file mode 100644
index 0000000..375a4e5
--- /dev/null
+++ b/Thronefall_v1.0/Decompile/HotOilTower.cs
@@ -0,0 +1,97 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class HotOilTower : MonoBehaviour
+{
+ public ParticleSystem hotOilGround;
+
+ public float hotOilGroundBurnTickDuration = 0.2f;
+
+ public int hotOilGroundBurnTicks = 5;
+
+ public float attackCooldown = 5f;
+
+ public float checkRate = 1f;
+
+ public float range = 3.5f;
+
+ public List<DamageModifyer> damageModifyers = new List<DamageModifyer>();
+
+ public List<TagManager.ETag> mustHaveTags;
+
+ public List<TagManager.ETag> mayNotHaveTags;
+
+ private float cooldown;
+
+ private TagManager tagManager;
+
+ private List<TaggedObject> foundTaggedObjects = new List<TaggedObject>();
+
+ private float timeTillTickEnds;
+
+ private int ticksRemaining;
+
+ private void Start()
+ {
+ cooldown = Random.value;
+ tagManager = TagManager.instance;
+ }
+
+ public void ReduceCooldownBy(float _reduceBy)
+ {
+ cooldown -= _reduceBy;
+ }
+
+ private void Update()
+ {
+ cooldown -= Time.deltaTime;
+ if (timeTillTickEnds > 0f)
+ {
+ timeTillTickEnds -= Time.deltaTime;
+ if (timeTillTickEnds <= 0f)
+ {
+ ticksRemaining--;
+ if (ticksRemaining < 0)
+ {
+ ParticleSystem.EmissionModule emission = hotOilGround.emission;
+ emission.enabled = false;
+ }
+ else
+ {
+ DamageTick();
+ timeTillTickEnds = hotOilGroundBurnTickDuration;
+ }
+ }
+ }
+ if (cooldown <= 0f)
+ {
+ if (DamageTick())
+ {
+ cooldown = attackCooldown;
+ timeTillTickEnds = hotOilGroundBurnTickDuration;
+ ticksRemaining = hotOilGroundBurnTicks - 1;
+ ParticleSystem.EmissionModule emission2 = hotOilGround.emission;
+ emission2.enabled = true;
+ }
+ else
+ {
+ cooldown = checkRate;
+ }
+ }
+ }
+
+ private bool DamageTick()
+ {
+ bool result = false;
+ tagManager.FindAllTaggedObjectsWithTags(foundTaggedObjects, mustHaveTags, mayNotHaveTags);
+ for (int i = 0; i < foundTaggedObjects.Count; i++)
+ {
+ if (!(tagManager.MeasureDistanceToTaggedObject(foundTaggedObjects[i], base.transform.position) > range))
+ {
+ result = true;
+ foundTaggedObjects[i].Hp.TakeDamage(DamageModifyer.CalculateDamageOnTarget(foundTaggedObjects[i], damageModifyers) / (float)hotOilGroundBurnTicks);
+ }
+ }
+ return result;
+ }
+}