summaryrefslogtreecommitdiff
path: root/Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs')
-rw-r--r--Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs b/Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs
new file mode 100644
index 0000000..c49db65
--- /dev/null
+++ b/Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs
@@ -0,0 +1,54 @@
+using UnityEngine;
+
+public class SE_Burning : StatusEffect
+{
+ [Header("SE_Burning")]
+ public float m_damageInterval = 1f;
+
+ private float m_timer;
+
+ private float m_totalDamage;
+
+ private HitData.DamageTypes m_damage;
+
+ public override void Setup(Character character)
+ {
+ base.Setup(character);
+ }
+
+ public override void UpdateStatusEffect(float dt)
+ {
+ base.UpdateStatusEffect(dt);
+ if (m_character.GetSEMan().HaveStatusEffect("Wet"))
+ {
+ m_time += dt * 5f;
+ }
+ m_timer -= dt;
+ if (m_timer <= 0f)
+ {
+ m_timer = m_damageInterval;
+ HitData hitData = new HitData();
+ hitData.m_point = m_character.GetCenterPoint();
+ hitData.m_damage = m_damage.Clone();
+ m_character.ApplyDamage(hitData, showDamageText: true, triggerEffects: false);
+ }
+ }
+
+ public void AddFireDamage(float damage)
+ {
+ m_totalDamage = Mathf.Max(m_totalDamage, damage);
+ int num = (int)(m_ttl / m_damageInterval);
+ float fire = m_totalDamage / (float)num;
+ m_damage.m_fire = fire;
+ ResetTime();
+ }
+
+ public void AddSpiritDamage(float damage)
+ {
+ m_totalDamage = Mathf.Max(m_totalDamage, damage);
+ int num = (int)(m_ttl / m_damageInterval);
+ float spirit = m_totalDamage / (float)num;
+ m_damage.m_spirit = spirit;
+ ResetTime();
+ }
+}