Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ZoneEventDefenseGame.cs
Go to the documentation of this file.
1using Newtonsoft.Json;
2using UnityEngine;
3
5{
6 [JsonProperty]
7 public int wave;
8
9 [JsonProperty]
10 public int turns;
11
12 [JsonProperty]
13 public int hornTimer;
14
15 [JsonProperty]
16 public int kills;
17
18 [JsonProperty]
19 public int allyCall;
20
21 [JsonProperty]
22 public int allyTimer;
23
24 [JsonProperty]
25 public int bonus;
26
27 [JsonProperty]
28 public bool retreated;
29
30 public ZoneInstanceRandomQuest instance => EClass._zone.instance as ZoneInstanceRandomQuest;
31
32 public bool CanRetreat
33 {
34 get
35 {
36 if (rounds >= 100)
37 {
38 return hornTimer <= 0;
39 }
40 return false;
41 }
42 }
43
44 public bool CanCallAlly
45 {
46 get
47 {
48 if (allyCall == 0)
49 {
50 return rounds >= 50;
51 }
52 return false;
53 }
54 }
55
56 public override string TextWidgetDate => "defenseWave".lang(wave.ToString() ?? "", kills.ToString() ?? "", EClass._zone.DangerLv.ToString() ?? "") + ((instance != null && retreated) ? "defenseRetreating" : (CanRetreat ? "defenseRetreat" : "")).lang() + (CanCallAlly ? "defenseAlly" : "").lang();
57
58 public virtual Chara CreateChara()
59 {
60 return CharaGen.CreateFromFilter("c_wilds");
61 }
62
63 public override void OnVisit()
64 {
66 {
67 QuestDefenseGame.lastWave = wave;
68 QuestDefenseGame.bonus = bonus;
69 return;
70 }
71 EClass._zone._dangerLv = 5;
72 Point nearestPoint = EClass._map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
73 EClass._zone.AddCard(ThingGen.Create("stone_defense"), nearestPoint).Install().isNPCProperty = true;
74 EClass._zone.AddCard(ThingGen.Create("core_defense"), nearestPoint).Install().isNPCProperty = false;
75 EClass._zone.SetBGM(107);
76 Msg.Say("defense_start");
77 NextWave();
78 }
79
80 public void NextWave(int add = 0)
81 {
82 wave++;
83 turns = 0;
84 EClass._zone._dangerLv += ((wave >= 20) ? 10 : 5);
85 SE.Play("warhorn");
86 Msg.Say("defense_wave", wave.ToString() ?? "", EClass._zone.DangerLv.ToString() ?? "");
87 Spawn(2 + base.quest.difficulty + add);
88 AggroEnemy();
89 }
90
91 public override void _OnTickRound()
92 {
93 QuestDefenseGame.lastWave = wave;
94 QuestDefenseGame.bonus = bonus;
95 Debug.Log("wave:" + wave + " turns:" + turns + " rounds:" + rounds);
96 turns++;
97 if (hornTimer > 0)
98 {
99 hornTimer--;
100 }
101 if (turns <= 3 + base.quest.difficulty)
102 {
103 Spawn();
104 }
105 if (turns == 10 && wave % 5 == 0)
106 {
107 Rand.SetSeed(wave + base.quest.uid);
108 SpawnBoss(((wave >= 10) ? (wave * 2) : 0) > EClass.rnd(100));
109 Rand.SetSeed();
110 }
111 if (turns == 20)
112 {
113 NextWave();
114 }
115 AggroEnemy();
116 if (allyTimer > 0)
117 {
118 allyTimer--;
119 if (allyTimer == 0)
120 {
121 allyCall--;
122 }
123 }
124 }
125
126 public void Horn_Next()
127 {
128 Msg.Say("defense_start");
129 int add = 0;
130 if (turns <= 3)
131 {
132 Msg.Say("defense_bonus", bonus.ToString() ?? "");
133 bonus++;
134 add = 1 + base.quest.difficulty;
135 }
136 NextWave(add);
137 hornTimer += 10;
138 if (hornTimer > 100)
139 {
140 hornTimer = 100;
141 }
142 }
143
144 public void Horn_Retreat()
145 {
146 SE.Play("warhorn");
147 Msg.Say("defense_retreat");
148 retreated = true;
149 instance.status = ZoneInstance.Status.Success;
151 }
152
153 public void Horn_Ally()
154 {
155 SE.Play("warhorn");
156 ActEffect.ProcAt(EffectId.Summon, 100, BlessedState.Normal, EClass.pc, EClass.pc, EClass.pc.pos, isNeg: false, new ActRef
157 {
158 n1 = "special_force"
159 });
160 allyCall++;
161 allyTimer += 100;
162 }
163
164 public override void OnCharaDie(Chara c)
165 {
166 if (!c.IsPCParty && !c.IsPCPartyMinion)
167 {
168 kills++;
169 }
170 }
171}
BlessedState
Definition: BlessedState.cs:2
EffectId
Definition: EffectId.cs:2
static void Proc(EffectId id, Card cc, Card tc=null, int power=100, ActRef actRef=default(ActRef))
Definition: ActEffect.cs:788
static void ProcAt(EffectId id, int power, BlessedState state, Card cc, Card tc, Point tp, bool isNeg, ActRef actRef=default(ActRef))
Definition: ActEffect.cs:392
bool isNPCProperty
Definition: Card.cs:526
Point pos
Definition: Card.cs:55
Card Install()
Definition: Card.cs:3448
static Chara CreateFromFilter(string id, int lv=-1, int levelRange=-1)
Definition: CharaGen.cs:22
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:600
override bool IsPCPartyMinion
Definition: Chara.cs:624
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static int rnd(int a)
Definition: EClass.cs:50
static Zone _zone
Definition: EClass.cs:20
static Map _map
Definition: EClass.cs:18
static Chara pc
Definition: EClass.cs:14
bool isLoading
Definition: Game.cs:235
Point GetCenterPos()
Definition: MapBounds.cs:52
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Point.cs:9
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false)
Definition: Point.cs:595
Definition: Rand.cs:4
static void SetSeed(int a=-1)
Definition: Rand.cs:37
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
virtual Chara CreateChara()
override void OnCharaDie(Chara c)
override void _OnTickRound()
ZoneInstanceRandomQuest instance
override string TextWidgetDate
void AggroEnemy(int chance=100)
void SpawnBoss(bool evolve=false)
void Spawn(int num=1)
int rounds
Definition: ZoneEvent.cs:9
void SetBGM(List< int > ids, bool refresh=true)
Definition: Zone.cs:2706
override int DangerLv
Definition: Zone.cs:107
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893
Definition: ActRef.cs:2