22 local goals = { |
22 local goals = { |
23 [dialog01] = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer"), 1, 7000}, |
23 [dialog01] = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer"), 1, 7000}, |
24 [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have choose to fight! Lead the Green Bananas to battle and try not to let them be killed"), 1, 7000}, |
24 [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have choose to fight! Lead the Green Bananas to battle and try not to let them be killed"), 1, 7000}, |
25 [dialog03] = {missionName, loc("Ready for Battle?"), loc("You have choose to flee... Unfortunately the only place where you can launch your saucer is in the most left side of the map"), 1, 7000}, |
25 [dialog03] = {missionName, loc("Ready for Battle?"), loc("You have choose to flee... Unfortunately the only place where you can launch your saucer is in the most left side of the map"), 1, 7000}, |
26 } |
26 } |
|
27 -- crates |
|
28 local crateWMX = 2170 |
|
29 local crateWMY = 1950 |
|
30 local health1X = 2680 |
|
31 local health1Y = 716 |
27 -- hogs |
32 -- hogs |
28 local hero = {} |
33 local hero = {} |
29 local yellow1 = {} |
34 local yellow1 = {} |
30 local green1 = {} |
35 local green1 = {} |
31 local green2 = {} |
36 local green2 = {} |
54 green4.y = 1650 |
60 green4.y = 1650 |
55 yellow1.name = "General Lemon" |
61 yellow1.name = "General Lemon" |
56 yellow1.x = 140 |
62 yellow1.x = 140 |
57 yellow1.y = 1980 |
63 yellow1.y = 1980 |
58 local yellowArmy = { |
64 local yellowArmy = { |
59 [1] = {name = "Robert Yellow Apple", x = 710, y = 1780}, |
65 {name = "Robert Yellow Apple", x = 710, y = 1780}, |
60 [2] = {name = "Summer Squash", x = 315 , y = 1960}, |
66 {name = "Summer Squash", x = 315 , y = 1960}, |
61 [3] = {name = "Tall Potato", x = 830 , y = 1748}, |
67 {name = "Tall Potato", x = 830 , y = 1748}, |
62 [4] = {name = "Yellow Pepper", x = 285 , y = 1960}, |
68 {name = "Yellow Pepper", x = 285 , y = 1960}, |
63 [5] = {name = "Corn", x = 1320 , y = 540}, |
69 {name = "Corn", x = 1320 , y = 540}, |
64 [6] = {name = "Max Citrus", x = 1900 , y = 1700}, |
70 {name = "Max Citrus", x = 1900 , y = 1700}, |
65 [7] = {name = "Naranja Jed", x = 960 , y = 316}, |
71 {name = "Naranja Jed", x = 960 , y = 316}, |
66 } |
72 } |
67 teamA.name = loc("Hog Solo") |
73 teamA.name = loc("Hog Solo") |
68 teamA.color = tonumber("38D61C",16) -- green |
74 teamA.color = tonumber("38D61C",16) -- green |
69 teamB.name = loc("Green Bananas") |
75 teamB.name = loc("Green Bananas") |
70 teamB.color = tonumber("38D61C",16) -- green |
76 teamB.color = tonumber("38D61C",16) -- green |
90 HogTurnLeft(hero.gear, true) |
96 HogTurnLeft(hero.gear, true) |
91 -- Green Bananas |
97 -- Green Bananas |
92 AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy") |
98 AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy") |
93 green1.gear = AddHog(green1.name, 0, 100, "war_desertgrenadier1") |
99 green1.gear = AddHog(green1.name, 0, 100, "war_desertgrenadier1") |
94 AnimSetGearPosition(green1.gear, green1.x, green1.y) |
100 AnimSetGearPosition(green1.gear, green1.x, green1.y) |
|
101 green2.gear = AddHog(green2.name, 0, 100, "war_desertgrenadier1") |
|
102 AnimSetGearPosition(green2.gear, green2.x, green2.y) |
|
103 HogTurnLeft(green2.gear, true) |
|
104 green3.gear = AddHog(green3.name, 0, 100, "war_desertgrenadier1") |
|
105 AnimSetGearPosition(green3.gear, green3.x, green3.y) |
|
106 HogTurnLeft(green3.gear, true) |
|
107 green4.gear = AddHog(green4.name, 0, 100, "war_desertgrenadier1") |
|
108 AnimSetGearPosition(green4.gear, green4.x, green4.y) |
|
109 HogTurnLeft(green4.gear, true) |
95 -- Yellow Watermellons |
110 -- Yellow Watermellons |
96 AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy") |
111 AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy") |
97 yellow1.gear = AddHog(yellow1.name, 1, 100, "war_desertgrenadier1") |
112 yellow1.gear = AddHog(yellow1.name, 1, 100, "war_desertgrenadier1") |
98 AnimSetGearPosition(yellow1.gear, yellow1.x, yellow1.y) |
113 AnimSetGearPosition(yellow1.gear, yellow1.x, yellow1.y) |
99 -- the rest of the Yellow Watermellons |
114 -- the rest of the Yellow Watermellons |
117 AddAmmo(hero.gear, amRope, 2) |
132 AddAmmo(hero.gear, amRope, 2) |
118 AddAmmo(hero.gear, amBazooka, 3) |
133 AddAmmo(hero.gear, amBazooka, 3) |
119 AddAmmo(hero.gear, amParachute, 1) |
134 AddAmmo(hero.gear, amParachute, 1) |
120 AddAmmo(hero.gear, amGrenade, 6) |
135 AddAmmo(hero.gear, amGrenade, 6) |
121 AddAmmo(hero.gear, amDEagle, 4) |
136 AddAmmo(hero.gear, amDEagle, 4) |
122 -- Other team wapons |
137 -- Green team weapons |
|
138 local greenTeam = { green1, green2, green3, green4 } |
|
139 for i=1,4 do |
|
140 AddAmmo(greenTeam[i].gear, amBlowTorch, 1) |
|
141 AddAmmo(greenTeam[i].gear, amRope, 1) |
|
142 AddAmmo(greenTeam[i].gear, amBazooka, 4) |
|
143 AddAmmo(greenTeam[i].gear, amGrenade, 3) |
|
144 AddAmmo(greenTeam[i].gear, amFirePunch, 2) |
|
145 AddAmmo(greenTeam[i].gear, amDrill, 1) |
|
146 end |
|
147 -- Yellow team weapons |
123 AddAmmo(yellow1.gear, amBlowTorch, 1) |
148 AddAmmo(yellow1.gear, amBlowTorch, 1) |
124 AddAmmo(yellow1.gear, amRope, 1) |
149 AddAmmo(yellow1.gear, amRope, 1) |
125 AddAmmo(yellow1.gear, amBazooka, 3) |
150 AddAmmo(yellow1.gear, amBazooka, 3) |
126 AddAmmo(yellow1.gear, amGrenade, 1) |
151 AddAmmo(yellow1.gear, amGrenade, 1) |
127 AddAmmo(yellow1.gear, amFirePunch, 1) |
152 AddAmmo(yellow1.gear, amFirePunch, 1) |
128 AddAmmo(yellow1.gear, amDrill, 1) |
153 AddAmmo(yellow1.gear, amDrill, 1) |
129 for i=1,7 do |
154 for i=1,7 do |
130 AddAmmo(yellowArmy[i].gear, amBlowTorch, 1) |
155 AddAmmo(yellowArmy[i].gear, amBlowTorch, 1) |
131 AddAmmo(yellowArmy[i].gear, amRope, 1) |
156 AddAmmo(yellowArmy[i].gear, amRope, 1) |
132 AddAmmo(yellowArmy[i].gear, amBazooka, 3) |
157 AddAmmo(yellowArmy[i].gear, amBazooka, 3) |
133 AddAmmo(yellowArmy[i].gear, amGrenade, 1) |
158 AddAmmo(yellowArmy[i].gear, amGrenade, 3) |
134 AddAmmo(yellowArmy[i].gear, amFirePunch, 1) |
159 AddAmmo(yellowArmy[i].gear, amFirePunch, 1) |
135 AddAmmo(yellowArmy[i].gear, amDrill, 1) |
160 AddAmmo(yellowArmy[i].gear, amDrill, 3) |
|
161 AddAmmo(yellowArmy[i].gear, amBee, 1) |
|
162 AddAmmo(yellowArmy[i].gear, amMortar, 2) |
|
163 AddAmmo(yellowArmy[i].gear, amSniperRifle, 3) |
|
164 AddAmmo(yellowArmy[i].gear, amDEagle, 2) |
|
165 AddAmmo(yellowArmy[i].gear, amDynamite, 1) |
136 if i>2 then |
166 if i>2 then |
137 HideHog(yellowArmy[i].gear) |
167 HideHog(yellowArmy[i].gear) |
138 end |
168 end |
139 end |
169 end |
140 |
170 |
141 AddAnim(dialog01) |
171 AddAnim(dialog01) |
142 SendHealthStatsOff() |
172 SendHealthStatsOff() |
143 end |
173 end |
144 |
174 |
145 function onNewTurn() |
175 function onNewTurn() |
|
176 if CurrentHedgehog == green1.gear then |
|
177 TotalRounds = TotalRounds - 1 |
|
178 if GetHealth(green2.gear) then |
|
179 SwitchHog(green2.gear) |
|
180 elseif GetHealth(green3.gear) then |
|
181 SwitchHog(green3.gear) |
|
182 elseif GetHealth(green4.gear) then |
|
183 SwitchHog(green4.gear) |
|
184 end |
|
185 end |
146 getNextWave() |
186 getNextWave() |
147 end |
187 end |
148 |
188 |
149 function onGameTick() |
189 function onGameTick() |
150 AnimUnWait() |
190 AnimUnWait() |
156 end |
196 end |
157 |
197 |
158 function onGearDelete(gear) |
198 function onGearDelete(gear) |
159 if gear == hero.gear then |
199 if gear == hero.gear then |
160 hero.dead = true |
200 hero.dead = true |
|
201 elseif gear == green1.gear then |
|
202 green1.dead = true |
161 end |
203 end |
162 end |
204 end |
163 |
205 |
164 function onPrecise() |
206 function onPrecise() |
165 if GameTime > 3000 then |
207 if GameTime > 3000 then |
166 SetAnimSkip(true) |
208 SetAnimSkip(true) |
167 end |
209 end |
168 end |
210 end |
169 |
211 |
|
212 function onHogHide(gear) |
|
213 for i=3,7 do |
|
214 if gear == yellowArmy[i].gear then |
|
215 yellowArmy[i].hidden = true |
|
216 break |
|
217 end |
|
218 end |
|
219 end |
|
220 |
|
221 function onHogRestore(gear) |
|
222 for i=3,7 do |
|
223 if gear == yellowArmy[i].gear then |
|
224 yellowArmy[i].hidden = false |
|
225 break |
|
226 end |
|
227 end |
|
228 end |
|
229 |
170 -------------- EVENTS ------------------ |
230 -------------- EVENTS ------------------ |
171 |
231 |
172 function onHeroDeath(gear) |
232 function onHeroDeath(gear) |
173 if hero.dead then |
233 if hero.dead then |
174 return true |
234 return true |
175 end |
235 end |
176 return false |
236 return false |
177 end |
237 end |
178 |
238 |
|
239 function onGreen1Death(gear) |
|
240 if green1.dead then |
|
241 return true |
|
242 end |
|
243 return false |
|
244 end |
|
245 |
|
246 function onBattleWin(gear) |
|
247 local win = true |
|
248 for i=1,7 do |
|
249 if i<3 then |
|
250 if GetHealth(yellowArmy[i].gear) then |
|
251 win = false |
|
252 end |
|
253 else |
|
254 if GetHealth(yellowArmy[i].gear) and not yellowArmy[i].hidden then |
|
255 win = false |
|
256 end |
|
257 end |
|
258 end |
|
259 if GetHealth(yellow1.gear) then |
|
260 win = false |
|
261 end |
|
262 return win |
|
263 end |
|
264 |
179 function onHeroSelect(gear) |
265 function onHeroSelect(gear) |
180 if GetX(hero.gear) ~= hero.x then |
266 if GetX(hero.gear) ~= hero.x then |
181 return true |
267 return true |
182 end |
268 end |
183 return false |
269 return false |
184 end |
270 end |
185 |
271 |
186 -------------- OUTCOMES ------------------ I should really s/OUTCOMES/ACTIONS/ |
272 -------------- OUTCOMES ------------------ I should really s/OUTCOMES/ACTIONS/ |
187 |
273 |
188 function heroDeath(gear) |
274 function heroDeath(gear) |
189 SendStat('siGameResult', loc("Green Bananas lost, try again!")) --1 |
275 gameLost() |
190 SendStat('siCustomAchievement', loc("Tips...")) --11 |
276 end |
191 SendStat('siPlayerKills','1',teamC.name) |
277 |
192 SendStat('siPlayerKills','0',teamA.name) |
278 function green1Death(gear) |
193 SendStat('siPlayerKills','0',teamB.name) |
279 gameLost() |
|
280 end |
|
281 |
|
282 function battleWin(gear) |
|
283 -- add stats |
194 EndGame() |
284 EndGame() |
195 end |
285 end |
196 |
286 |
197 function heroSelect(gear) |
287 function heroSelect(gear) |
|
288 TurnTimeLeft = 0 |
198 FollowGear(hero.gear) |
289 FollowGear(hero.gear) |
199 TurnTimeLeft = 0 |
|
200 if GetX(hero.gear) < hero.x then |
290 if GetX(hero.gear) < hero.x then |
201 chooseToBattle = true |
291 chooseToBattle = true |
|
292 AddEvent(onGreen1Death, {green1.gear}, green1Death, {green1.gear}, 0) |
|
293 AddEvent(onBattleWin, {hero.gear}, battleWin, {hero.gear}, 0) |
202 AddAnim(dialog02) |
294 AddAnim(dialog02) |
203 elseif GetX(hero.gear) > hero.x then |
295 elseif GetX(hero.gear) > hero.x then |
204 AddAnim(dialog03) |
296 AddAnim(dialog03) |
205 end |
297 end |
206 end |
298 end |
264 function startBattle() |
356 function startBattle() |
265 AnimSwitchHog(yellow1.gear) |
357 AnimSwitchHog(yellow1.gear) |
266 TurnTimeLeft = 0 |
358 TurnTimeLeft = 0 |
267 end |
359 end |
268 |
360 |
|
361 function gameLost() |
|
362 SendStat('siGameResult', loc("Green Bananas lost, try again!")) --1 |
|
363 SendStat('siCustomAchievement', loc("Tips...")) --11 |
|
364 SendStat('siPlayerKills','1',teamC.name) |
|
365 SendStat('siPlayerKills','0',teamA.name) |
|
366 SendStat('siPlayerKills','0',teamB.name) |
|
367 EndGame() |
|
368 end |
|
369 |
269 function getNextWave() |
370 function getNextWave() |
270 if TotalRounds == 4 then |
371 if TotalRounds == 4 then |
271 RestoreHog(yellowArmy[3].gear) |
372 RestoreHog(yellowArmy[3].gear) |
272 AnimCaption(hero.gear, loc("Next wave in 3 turns"), 5000) |
373 AnimCaption(hero.gear, loc("Next wave in 3 turns"), 5000) |
273 elseif TotalRounds == 7 then |
374 elseif TotalRounds == 7 then |