summaryrefslogtreecommitdiff
path: root/GameCode/LineRangeEffect.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-10-27 11:05:14 +0800
committerchai <215380520@qq.com>2023-10-27 11:05:14 +0800
commit766cdff5ffa72b65d7f106658d1603f47739b2ba (patch)
tree34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/LineRangeEffect.cs
+ init
Diffstat (limited to 'GameCode/LineRangeEffect.cs')
-rw-r--r--GameCode/LineRangeEffect.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/GameCode/LineRangeEffect.cs b/GameCode/LineRangeEffect.cs
new file mode 100644
index 0000000..6671fcc
--- /dev/null
+++ b/GameCode/LineRangeEffect.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+public class LineRangeEffect : MonoBehaviour
+{
+ public float dmg;
+
+ public float knockback;
+
+ private LineEffect lineEffect;
+
+ private Player owner;
+
+ private SpawnedAttack spawned;
+
+ private bool done;
+
+ private void Start()
+ {
+ spawned = GetComponent<SpawnedAttack>();
+ owner = GetComponent<SpawnedAttack>().spawner;
+ lineEffect = GetComponentInChildren<LineEffect>();
+ }
+
+ private void Update()
+ {
+ if (done || !spawned.IsMine())
+ {
+ return;
+ }
+ Player closestPlayerInTeam = PlayerManager.instance.GetClosestPlayerInTeam(base.transform.position, PlayerManager.instance.GetOtherTeam(owner.teamID), needVision: true);
+ if ((bool)closestPlayerInTeam)
+ {
+ float num = 2f;
+ float radius = lineEffect.GetRadius();
+ float num2 = Vector2.Distance(base.transform.position, closestPlayerInTeam.transform.position);
+ if (num2 < radius + num && num2 > radius - num)
+ {
+ done = true;
+ closestPlayerInTeam.data.healthHandler.CallTakeDamage(dmg * base.transform.localScale.x * (closestPlayerInTeam.transform.position - base.transform.position).normalized, closestPlayerInTeam.transform.position, null, owner);
+ closestPlayerInTeam.data.healthHandler.CallTakeForce(knockback * base.transform.localScale.x * (closestPlayerInTeam.transform.position - base.transform.position).normalized);
+ }
+ }
+ }
+}