summaryrefslogtreecommitdiff
path: root/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/SE_Harpooned.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_r202102_v0.141.2/Valheim/assembly_valheim/SE_Harpooned.cs')
-rw-r--r--Valheim_r202102_v0.141.2/Valheim/assembly_valheim/SE_Harpooned.cs128
1 files changed, 0 insertions, 128 deletions
diff --git a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/SE_Harpooned.cs b/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/SE_Harpooned.cs
deleted file mode 100644
index b145556..0000000
--- a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/SE_Harpooned.cs
+++ /dev/null
@@ -1,128 +0,0 @@
-using UnityEngine;
-
-public class SE_Harpooned : StatusEffect
-{
- [Header("SE_Harpooned")]
- public float m_minForce = 2f;
-
- public float m_maxForce = 10f;
-
- public float m_minDistance = 6f;
-
- public float m_maxDistance = 30f;
-
- public float m_staminaDrain = 10f;
-
- public float m_staminaDrainInterval = 0.1f;
-
- public float m_maxMass = 50f;
-
- private bool m_broken;
-
- private Character m_attacker;
-
- private float m_drainStaminaTimer;
-
- public override void Setup(Character character)
- {
- base.Setup(character);
- }
-
- public override void SetAttacker(Character attacker)
- {
- ZLog.Log("Setting attacker " + attacker.m_name);
- m_attacker = attacker;
- m_time = 0f;
- if (Vector3.Distance(m_attacker.transform.position, m_character.transform.position) > m_maxDistance)
- {
- m_attacker.Message(MessageHud.MessageType.Center, "Target too far");
- m_broken = true;
- return;
- }
- m_attacker.Message(MessageHud.MessageType.Center, m_character.m_name + " harpooned");
- GameObject[] startEffectInstances = m_startEffectInstances;
- foreach (GameObject gameObject in startEffectInstances)
- {
- if ((bool)gameObject)
- {
- LineConnect component = gameObject.GetComponent<LineConnect>();
- if ((bool)component)
- {
- component.SetPeer(m_attacker.GetComponent<ZNetView>());
- }
- }
- }
- }
-
- public override void UpdateStatusEffect(float dt)
- {
- base.UpdateStatusEffect(dt);
- if (!m_attacker)
- {
- return;
- }
- Rigidbody component = m_character.GetComponent<Rigidbody>();
- if (!component)
- {
- return;
- }
- Vector3 vector = m_attacker.transform.position - m_character.transform.position;
- Vector3 normalized = vector.normalized;
- float radius = m_character.GetRadius();
- float magnitude = vector.magnitude;
- float num = Mathf.Clamp01(Vector3.Dot(normalized, component.velocity));
- float t = Utils.LerpStep(m_minDistance, m_maxDistance, magnitude);
- float num2 = Mathf.Lerp(m_minForce, m_maxForce, t);
- float num3 = Mathf.Clamp01(m_maxMass / component.mass);
- float num4 = num2 * num3;
- if (magnitude - radius > m_minDistance && num < num4)
- {
- normalized.y = 0f;
- normalized.Normalize();
- _ = (bool)m_character.GetStandingOnShip();
- if (!m_character.IsAttached())
- {
- component.AddForce(normalized * num4, ForceMode.VelocityChange);
- }
- m_drainStaminaTimer += dt;
- if (m_drainStaminaTimer > m_staminaDrainInterval)
- {
- m_drainStaminaTimer = 0f;
- float num5 = 1f - Mathf.Clamp01(num / num2);
- m_attacker.UseStamina(m_staminaDrain * num5);
- }
- }
- if (magnitude > m_maxDistance)
- {
- m_broken = true;
- m_attacker.Message(MessageHud.MessageType.Center, "Line broke");
- }
- if (!m_attacker.HaveStamina())
- {
- m_broken = true;
- m_attacker.Message(MessageHud.MessageType.Center, m_character.m_name + " escaped");
- }
- }
-
- public override bool IsDone()
- {
- if (base.IsDone())
- {
- return true;
- }
- if (m_broken)
- {
- return true;
- }
- if (!m_attacker)
- {
- return true;
- }
- if (m_time > 2f && (m_attacker.IsBlocking() || m_attacker.InAttack()))
- {
- m_attacker.Message(MessageHud.MessageType.Center, m_character.m_name + " released");
- return true;
- }
- return false;
- }
-}