Elin Decompiled Documentation EA 23.244 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 int num = (base.quest.FameContent ? (EClass.pc.FameLv / 100 * 50) : 0);
72 EClass._zone._dangerLv = 5 + num;
73 bonus += num / 10;
74 Point nearestPoint = EClass._map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
75 EClass._zone.AddCard(ThingGen.Create("stone_defense"), nearestPoint).Install().isNPCProperty = true;
76 EClass._zone.AddCard(ThingGen.Create("core_defense"), nearestPoint).Install().isNPCProperty = false;
77 EClass._zone.SetBGM(107);
78 Msg.Say("defense_start");
79 NextWave();
80 }
81
82 public void NextWave(int add = 0)
83 {
84 wave++;
85 turns = 0;
86 long num = EClass._zone._dangerLv + ((EClass._zone.DangerLv >= 100) ? (EClass._zone.DangerLv / 100 * 5 + 5) : 5);
87 if (num >= 2000000000)
88 {
89 num = 2000000000L;
90 }
91 EClass._zone._dangerLv = (int)num;
92 SE.Play("warhorn");
93 Msg.Say("warhorn");
94 Msg.Say("defense_wave", wave.ToString() ?? "", EClass._zone.DangerLv.ToString() ?? "");
95 Spawn(2 + base.quest.difficulty + add);
96 AggroEnemy();
97 }
98
99 public override void _OnTickRound()
100 {
101 QuestDefenseGame.lastWave = wave;
102 QuestDefenseGame.bonus = bonus;
103 Debug.Log("wave:" + wave + " turns:" + turns + " rounds:" + rounds);
104 turns++;
105 if (hornTimer > 0)
106 {
107 hornTimer--;
108 }
109 if (turns <= 3 + base.quest.difficulty)
110 {
111 Spawn();
112 }
113 if (turns == 10 && wave % 5 == 0)
114 {
115 Rand.SetSeed(wave + base.quest.uid);
116 SpawnBoss(((wave >= 10) ? (wave * 2) : 0) > EClass.rnd(100));
117 Rand.SetSeed();
118 }
119 if (turns == 20)
120 {
121 NextWave();
122 }
123 AggroEnemy();
124 if (allyTimer > 0)
125 {
126 allyTimer--;
127 if (allyTimer == 0)
128 {
129 allyCall--;
130 }
131 }
132 }
133
134 public void Horn_Next()
135 {
136 Msg.Say("defense_start");
137 int add = 0;
138 if (turns <= 3)
139 {
140 Msg.Say("defense_bonus", bonus.ToString() ?? "");
141 bonus++;
142 add = 1 + base.quest.difficulty;
143 }
144 NextWave(add);
145 hornTimer += 10;
146 if (hornTimer > 100)
147 {
148 hornTimer = 100;
149 }
150 }
151
152 public void Horn_Retreat()
153 {
154 SE.Play("warhorn");
155 Msg.Say("warhorn");
156 Msg.Say("defense_retreat");
157 retreated = true;
158 instance.status = ZoneInstance.Status.Success;
160 }
161
162 public void Horn_Ally()
163 {
164 SE.Play("warhorn");
165 Msg.Say("warhorn");
166 ActEffect.ProcAt(EffectId.Summon, 100, BlessedState.Normal, EClass.pc, EClass.pc, EClass.pc.pos, isNeg: false, new ActRef
167 {
168 n1 = "special_force"
169 });
170 allyCall++;
171 allyTimer += 100;
172 }
173
174 public override void OnCharaDie(Chara c)
175 {
176 if (!c.IsPCParty && !c.IsPCPartyMinion)
177 {
178 kills++;
179 }
180 }
181}
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:987
static void ProcAt(EffectId id, int power, BlessedState state, Card cc, Card tc, Point tp, bool isNeg, ActRef actRef=default(ActRef))
Definition: ActEffect.cs:485
bool isNPCProperty
Definition: Card.cs:554
Point pos
Definition: Card.cs:59
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:615
override bool IsPCPartyMinion
Definition: Chara.cs:639
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static Zone _zone
Definition: EClass.cs:21
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static Chara pc
Definition: EClass.cs:15
bool isLoading
Definition: Game.cs:241
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, int minRadius=0)
Definition: Point.cs:619
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, float fadeDuration=0f)
Definition: Zone.cs:2923
override int DangerLv
Definition: Zone.cs:107
Card AddCard(Card t, Point point)
Definition: Zone.cs:1959
Definition: ActRef.cs:2