| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using System.Collections;
- using UnityEngine;
- namespace UltimateNPCWeapons.Scripts
- {
- public class WallacesBirthrightProjectile : MonoBehaviour
- {
- public float speed = 15;
- public float deathTimer = 2;
- private float projRange;
- private Transform t;
- private GameObject atalanta;
- private int damage;
- private bool bursting;
- private bool reborn;
- private bool dying;
- private Vector3 dir;
- private void Awake()
- {
- t = transform;
- atalanta = t.GetChild(2).gameObject;
- }
- private void Set(Package2 d)
- {
- damage = (int)d.damage;
- dir = new Vector3(d.dir.x, 0f, 0f);
- dir.Normalize();
- projRange = d.projRange;
- StartCoroutine(Die());
- }
- private IEnumerator Burst(Vector3 targ)
- {
- bursting = true;
- yield return new WaitForSeconds(0.1f);
- dir = targ - t.position;
- dir = new Vector3(dir.x, 0f, 0f);
- dir.Normalize();
- bursting = false;
- yield return new WaitForSeconds(0.4f);
- yield break;
- }
- private void Exile()
- {
- Network.RemoveRPCs(GetComponent<NetworkView>().viewID);
- Network.Destroy(gameObject);
- }
- [RPC]
- private void hide()
- {
- t.position = new Vector3(-500f, -500f, -500f);
- }
- private IEnumerator Die()
- {
- if (!dying)
- {
- dying = true;
- yield return new WaitForSeconds(deathTimer + projRange * 0.05f);
- if (!reborn)
- {
- hide();
- yield return new WaitForSeconds(5f);
- UnityEngine.Object.Destroy(gameObject);
- }
- else
- {
- reborn = false;
- dying = false;
- StartCoroutine(Die());
- }
- }
- yield break;
- }
- private IEnumerator DieNetwork(float w)
- {
- if (!dying)
- {
- dying = true;
- yield return new WaitForSeconds(deathTimer);
- hide();
- gameObject.GetComponent<NetworkView>().RPC("hide", RPCMode.All, new object[0]);
- yield return new WaitForSeconds(w);
- Exile();
- }
- yield break;
- }
- [RPC]
- private void DieN()
- {
- Network.RemoveRPCs(base.GetComponent<NetworkView>().viewID);
- Network.Destroy(base.gameObject);
- }
- private void Update()
- {
- if (bursting)
- t.Translate(dir * speed * 4f * Time.deltaTime);
- else
- t.Translate(dir * speed * Time.deltaTime);
- }
- private void Eye(int a)
- {
- if (!reborn)
- {
- damage += a;
- reborn = true;
- speed *= 1.2f;
- atalanta.SetActive(true);
- }
- }
- private void OnTriggerEnter(Collider c)
- {
- if (c.gameObject.layer == 9 || c.gameObject.layer == 28)
- {
- float[] array = new float[] { damage, t.position.x };
- if (Network.isServer)
- c.gameObject.SendMessage("TD", array);
- }
- }
- }
- }
|