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;
}
}
|