3 -- In this cold planet hero seeks for a part of the |
3 -- In this cold planet hero seeks for a part of the |
4 -- antigravity device. He has to capture Icy Pit who |
4 -- antigravity device. He has to capture Icy Pit who |
5 -- knows where the device is hidden. Hero will be |
5 -- knows where the device is hidden. Hero will be |
6 -- able to use only the ice gun for this mission. |
6 -- able to use only the ice gun for this mission. |
7 |
7 |
|
8 -- TODO |
|
9 -- alter map so hero may climb to the higher place |
|
10 -- maybe use rope challenge to go there |
|
11 -- add checkpoints |
|
12 -- fix the stats |
|
13 -- add mines to the higher place/final stage |
|
14 |
8 HedgewarsScriptLoad("/Scripts/Locale.lua") |
15 HedgewarsScriptLoad("/Scripts/Locale.lua") |
9 HedgewarsScriptLoad("/Scripts/Animate.lua") |
16 HedgewarsScriptLoad("/Scripts/Animate.lua") |
10 |
17 |
11 ----------------- VARIABLES -------------------- |
18 ----------------- VARIABLES -------------------- |
12 -- globals |
19 -- globals |
13 local heroAtAntiFlyArea = false |
20 local heroAtAntiFlyArea = false |
|
21 local heroVisitedAntiFlyArea = false |
|
22 local heroAtFinaleStep = false |
14 -- crates |
23 -- crates |
15 local icegunY = 1950 |
24 local icegunY = 1950 |
16 local icegunX = 260 |
25 local icegunX = 260 |
17 -- hogs |
26 -- hogs |
18 local hero = {} |
27 local hero = {} |
80 AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy") |
89 AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy") |
81 ally.gear = AddHog(ally.name, 0, 100, "tophats") |
90 ally.gear = AddHog(ally.name, 0, 100, "tophats") |
82 AnimSetGearPosition(ally.gear, ally.x, ally.y) |
91 AnimSetGearPosition(ally.gear, ally.x, ally.y) |
83 -- Frozen Bandits |
92 -- Frozen Bandits |
84 AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy") |
93 AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy") |
85 bandit1.gear = AddHog(bandit1.name, 0, 100, "tophats") |
94 bandit1.gear = AddHog(bandit1.name, 1, 100, "tophats") |
86 AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y) |
95 AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y) |
87 HogTurnLeft(bandit1.gear, true) |
96 HogTurnLeft(bandit1.gear, true) |
88 bandit2.gear = AddHog(bandit2.name, 0, 100, "tophats") |
97 bandit2.gear = AddHog(bandit2.name, 1, 100, "tophats") |
89 AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y) |
98 AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y) |
90 bandit3.gear = AddHog(bandit3.name, 0, 100, "tophats") |
99 bandit3.gear = AddHog(bandit3.name, 1, 100, "tophats") |
91 AnimSetGearPosition(bandit3.gear, bandit3.x, bandit3.y) |
100 AnimSetGearPosition(bandit3.gear, bandit3.x, bandit3.y) |
92 bandit4.gear = AddHog(bandit4.name, 0, 100, "tophats") |
101 bandit4.gear = AddHog(bandit4.name, 1, 100, "tophats") |
93 AnimSetGearPosition(bandit4.gear, bandit4.x, bandit4.y) |
102 AnimSetGearPosition(bandit4.gear, bandit4.x, bandit4.y) |
94 HogTurnLeft(bandit4.gear, true) |
103 HogTurnLeft(bandit4.gear, true) |
95 bandit5.gear = AddHog(bandit5.name, 0, 100, "tophats") |
104 bandit5.gear = AddHog(bandit5.name, 1, 100, "tophats") |
96 AnimSetGearPosition(bandit5.gear, bandit5.x, bandit5.y) |
105 AnimSetGearPosition(bandit5.gear, bandit5.x, bandit5.y) |
97 HogTurnLeft(bandit5.gear, true) |
106 HogTurnLeft(bandit5.gear, true) |
98 |
107 |
99 AnimInit() |
108 AnimInit() |
100 AnimationSetup() |
109 AnimationSetup() |
103 function onGameStart() |
112 function onGameStart() |
104 AnimWait(hero.gear, 3000) |
113 AnimWait(hero.gear, 3000) |
105 FollowGear(hero.gear) |
114 FollowGear(hero.gear) |
106 |
115 |
107 AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 1) |
116 AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 1) |
|
117 AddEvent(onHeroFinalStep, {hero.gear}, heroFinalStep, {hero.gear}, 0) |
108 AddEvent(onAntiFlyArea, {hero.gear}, antiFlyArea, {hero.gear}, 1) |
118 AddEvent(onAntiFlyArea, {hero.gear}, antiFlyArea, {hero.gear}, 1) |
109 AddEvent(onNonAntiFlyArea, {hero.gear}, nonAntiFlyArea, {hero.gear}, 1) |
119 AddEvent(onNonAntiFlyArea, {hero.gear}, nonAntiFlyArea, {hero.gear}, 1) |
110 |
120 |
111 AddAmmo(hero.gear, amJetpack, 99) |
121 AddAmmo(hero.gear, amJetpack, 99) |
112 AddAmmo(hero.gear, amBazooka, 1) |
122 AddAmmo(hero.gear, amBazooka, 1) |
|
123 AddAmmo(bandit1.gear, amBazooka, 5) |
|
124 AddAmmo(bandit2.gear, amBazooka, 4) |
|
125 AddAmmo(bandit3.gear, amMine, 2) |
|
126 AddAmmo(bandit3.gear, amGrenade, 3) |
|
127 AddAmmo(bandit4.gear, amBazooka, 5) |
|
128 AddAmmo(bandit5.gear, amBazooka, 5) |
113 SpawnAmmoCrate(icegunX, icegunY, amIceGun) |
129 SpawnAmmoCrate(icegunX, icegunY, amIceGun) |
114 |
130 |
115 end |
131 end |
116 |
132 |
117 function onNewTurn() |
133 function onNewTurn() |
118 -- rounds start if hero got his weapons or got near the enemies |
134 -- round has to start if hero goes near the column |
119 if not heroAtAntiFlyArea and CurrentHedgehog ~= hero.gear then |
135 if not heroVisitedAntiFlyArea and CurrentHedgehog ~= hero.gear then |
120 WriteLnToConsole(" IF 1") |
136 TurnTimeLeft = 0 |
121 TurnTimeLeft = 0 |
137 elseif not heroVisitedAntiFlyArea and CurrentHedgehog == hero.gear then |
122 elseif not heroAtAntiFlyArea and CurrentHedgehog == hero.gear then |
|
123 WriteLnToConsole(" IF 2") |
|
124 TurnTimeLeft = -1 |
138 TurnTimeLeft = -1 |
|
139 elseif not heroAtFinaleStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then |
|
140 AnimSwitchHog(hero.gear) |
|
141 TurnTimeLeft = 0 |
|
142 elseif CurrentHedgehog == ally.gear then |
|
143 TurnTimeLeft = 0 |
125 end |
144 end |
126 end |
145 end |
127 |
146 |
128 function onGameTick() |
147 function onGameTick() |
129 AnimUnWait() |
148 AnimUnWait() |
165 return true |
184 return true |
166 end |
185 end |
167 return false |
186 return false |
168 end |
187 end |
169 |
188 |
|
189 function onHeroFinalStep(gear) |
|
190 if not hero.dead and GetY(gear) < 900 and GetX(gear) > 1400 then |
|
191 return true |
|
192 end |
|
193 return false |
|
194 end |
|
195 |
170 -------------- OUTCOMES ------------------ |
196 -------------- OUTCOMES ------------------ |
171 |
197 |
172 function antiFlyArea(gear) |
198 function antiFlyArea(gear) |
173 heroAtAntiFlyArea = true |
199 heroAtAntiFlyArea = true |
174 TurnTimeLeft = 0 |
200 if TurnTimeLeft < -1 then |
175 FollowGear(hero.gear) |
201 heroVisitedAntiFlyArea = true |
176 AddAmmo(hero.gear, amJetpack, 0) |
202 TurnTimeLeft = 0 |
177 AnimSwitchHog(bandit1.gear) |
203 FollowGear(hero.gear) |
178 FollowGear(hero.gear) |
204 AddAmmo(hero.gear, amJetpack, 0) |
179 TurnTimeLeft = 0 |
205 AnimSwitchHog(bandit1.gear) |
|
206 FollowGear(hero.gear) |
|
207 TurnTimeLeft = 0 |
|
208 else |
|
209 AddAmmo(hero.gear, amJetpack, 0) |
|
210 end |
180 end |
211 end |
181 |
212 |
182 function nonAntiFlyArea(gear) |
213 function nonAntiFlyArea(gear) |
183 heroAtAntiFlyArea = false |
214 heroAtAntiFlyArea = false |
184 TurnTimeLeft = 0 |
|
185 FollowGear(hero.gear) |
|
186 AddAmmo(hero.gear, amJetpack, 99) |
215 AddAmmo(hero.gear, amJetpack, 99) |
187 AnimSwitchHog(bandit1.gear) |
|
188 FollowGear(hero.gear) |
|
189 TurnTimeLeft = 0 |
|
190 end |
216 end |
191 |
217 |
192 function heroDeath(gear) |
218 function heroDeath(gear) |
193 SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1 |
219 SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1 |
194 -- more custom stats |
220 -- more custom stats |
195 EndGame() |
221 EndGame() |
196 end |
222 end |
197 |
223 |
|
224 function heroFinalStep(gear) |
|
225 heroAtFinaleStep = true |
|
226 end |
|
227 |
198 -------------- ANIMATIONS ------------------ |
228 -------------- ANIMATIONS ------------------ |
199 |
229 |
200 function AnimationSetup() |
230 function AnimationSetup() |
201 |
231 |
202 end |
232 end |