summaryrefslogtreecommitdiff
path: root/GameCode/BattleCry.cs
blob: f76a7569ed5d3dca82600584892f0690fbc49a1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using UnityEngine;

public class BattleCry : MonoBehaviour
{
	public enum BattleCryTrigger
	{
		Death,
		Spawn,
		NearEnd,
		ArmorBreak,
		ShieldBreak
	}

	[SerializeField]
	private LayerMask enemyLayerMask;

	[SerializeField]
	private string battleCryText = "Battle Cry!";

	[SerializeField]
	private float cryRadius;

	[SerializeField]
	private BattleCryTrigger myTrigger;

	[SerializeField]
	private float fortifyTime;

	[SerializeField]
	private float hastePercentage;

	[SerializeField]
	private GameObject[] enemiesToSpawn;

	private bool triggered;

	public void CheckBattleCry(BattleCryTrigger source)
	{
		if (source == myTrigger && !triggered)
		{
			Cry();
		}
	}

	private void Cry()
	{
		if (enemiesToSpawn.Length != 0)
		{
			Waypoint currentWaypoint = GetComponent<Pathfinder>().currentWaypoint;
			GameObject[] array = enemiesToSpawn;
			for (int i = 0; i < array.Length; i++)
			{
				Enemy component = Object.Instantiate(array[i], base.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 0f, Random.Range(-0.5f, 0.5f)), Quaternion.identity).GetComponent<Enemy>();
				component.SetStats();
				component.SetFirstSpawnPoint(currentWaypoint);
				SpawnManager.instance.currentEnemies.Add(component);
			}
		}
		DamageNumber component2 = ObjectPool.instance.SpawnObject(ObjectPool.ObjectType.DamageNumber, base.transform.position, Quaternion.identity).GetComponent<DamageNumber>();
		component2.SetText(battleCryText, "Grey", 1f);
		component2.SetHoldTime(2f);
		if (myTrigger != 0)
		{
			component2.transform.parent = base.transform;
		}
		Collider[] array2 = Physics.OverlapSphere(base.transform.position, cryRadius, enemyLayerMask, QueryTriggerInteraction.Collide);
		for (int i = 0; i < array2.Length; i++)
		{
			Enemy component3 = array2[i].GetComponent<Enemy>();
			if (component3 != null)
			{
				if (fortifyTime > 0f)
				{
					component3.Fortify(fortifyTime);
				}
				if (hastePercentage > 0f)
				{
					component3.AddHaste(hastePercentage);
				}
			}
		}
		triggered = true;
	}
}