diff options
Diffstat (limited to 'Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs')
-rw-r--r-- | Valheim_v202102/Valheim/assembly_valheim/SE_Burning.cs | 54 |
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(); + } +} |