83 HealthDecrease = 0 |
82 HealthDecrease = 0 |
84 WaterRise = 0 |
83 WaterRise = 0 |
85 Map = "fruit02_map" |
84 Map = "fruit02_map" |
86 Theme = "Fruit" |
85 Theme = "Fruit" |
87 |
86 |
88 -- load checkpoints, problem getting the campaign variable |
|
89 local health = 100 |
87 local health = 100 |
90 checkPointReached = initCheckpoint("fruit02") |
|
91 if checkPointReached ~= 1 then |
|
92 loadHogsPositions() |
|
93 health = tonumber(GetCampaignVar("HeroHealth")) |
|
94 end |
|
95 |
88 |
96 -- Hog Solo and Green Bananas |
89 -- Hog Solo and Green Bananas |
97 AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "hedgehog") |
90 AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "hedgehog") |
98 hero.gear = AddHog(hero.name, 0, health, "war_desertgrenadier1") |
91 hero.gear = AddHog(hero.name, 0, health, "war_desertgrenadier1") |
99 AnimSetGearPosition(hero.gear, hero.x, hero.y) |
92 AnimSetGearPosition(hero.gear, hero.x, hero.y) |
180 AddGear(3105, 1680, gtMine, 0, 0, 0, 0) |
173 AddGear(3105, 1680, gtMine, 0, 0, 0, 0) |
181 AddGear(3095, 1680, gtMine, 0, 0, 0, 0) |
174 AddGear(3095, 1680, gtMine, 0, 0, 0, 0) |
182 AddGear(3085, 1680, gtMine, 0, 0, 0, 0) |
175 AddGear(3085, 1680, gtMine, 0, 0, 0, 0) |
183 AddGear(3075, 1680, gtMine, 0, 0, 0, 0) |
176 AddGear(3075, 1680, gtMine, 0, 0, 0, 0) |
184 |
177 |
185 if checkPointReached == 1 then |
178 AddAmmo(hero.gear, amFirePunch, 3) |
186 AddAmmo(hero.gear, amFirePunch, 3) |
179 if tookPartInBattle then |
187 AddEvent(onCheckPoint1, {hero.gear}, checkPoint1, {hero.gear}, 0) |
180 AddAnim(dialog01) |
188 AddEvent(onCheckPoint2, {hero.gear}, checkPoint2, {hero.gear}, 0) |
181 else |
189 AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0) |
182 AddAnim(dialog02) |
190 AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0) |
|
191 if tookPartInBattle then |
|
192 AddAnim(dialog01) |
|
193 else |
|
194 AddAnim(dialog02) |
|
195 end |
|
196 elseif checkPointReached == 2 then |
|
197 AddEvent(onCheckPoint2, {hero.gear}, checkPoint2, {hero.gear}, 0) |
|
198 AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0) |
|
199 AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0) |
|
200 elseif checkPointReached == 3 then |
|
201 AddEvent(onCheckPoint1, {hero.gear}, checkPoint1, {hero.gear}, 0) |
|
202 AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0) |
|
203 AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0) |
|
204 elseif checkPointReached == 4 then |
|
205 AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0) |
|
206 elseif checkPointReached == 5 then |
|
207 -- EMPTY |
|
208 end |
|
209 if checkPointReached ~= 1 then |
|
210 loadWeapons() |
|
211 end |
|
212 |
|
213 -- girders |
|
214 if checkPointReached > 1 then |
|
215 PlaceGirder(1580, 875, 4) |
|
216 PlaceGirder(1800, 875, 4) |
|
217 end |
183 end |
218 |
184 |
219 -- place crates |
185 -- place crates |
220 if checkPointReached < 2 then |
186 SpawnUtilityCrate(girderCrate.x, girderCrate.y, girderCrate.name) |
221 SpawnUtilityCrate(girderCrate.x, girderCrate.y, girderCrate.name) |
187 SpawnAmmoCrate(eagleCrate.x, eagleCrate.y, eagleCrate.name) |
222 end |
|
223 if checkPointReached < 5 then |
|
224 SpawnAmmoCrate(eagleCrate.x, eagleCrate.y, eagleCrate.name) |
|
225 end |
|
226 SpawnUtilityCrate(ropeCrate.x, ropeCrate.y, ropeCrate.name) |
188 SpawnUtilityCrate(ropeCrate.x, ropeCrate.y, ropeCrate.name) |
227 |
189 |
228 if tookPartInBattle then |
190 if tookPartInBattle then |
229 SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amWatermelon) |
191 SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amWatermelon) |
230 else |
192 else |
354 redDead = false |
316 redDead = false |
355 break |
317 break |
356 end |
318 end |
357 end |
319 end |
358 return redDead |
320 return redDead |
359 end |
|
360 |
|
361 function onCheckPoint1(gear) |
|
362 -- before barrel jump |
|
363 if not hero.dead and GetX(hero.gear) > 2850 and GetX(hero.gear) < 2945 |
|
364 and GetY(hero.gear) > 808 and GetY(hero.gear) < 852 and not isHeroAtWrongPlace() then |
|
365 return true |
|
366 end |
|
367 return false |
|
368 end |
|
369 |
|
370 function onCheckPoint2(gear) |
|
371 -- before barrel jump |
|
372 if ((GetHealth(green2.gear) and GetX(green2.gear) > 2850 and GetX(green2.gear) < 2945 and GetY(green2.gear) > 808 and GetY(green2.gear) < 852) |
|
373 or (GetHealth(green3.gear) and GetX(green3.gear) > 2850 and GetX(green3.gear) < 2945 and GetY(green3.gear) > 808 and GetY(green3.gear) < 852)) |
|
374 and not isHeroAtWrongPlace() then |
|
375 return true |
|
376 end |
|
377 return false |
|
378 end |
|
379 |
|
380 function onCheckPoint3(gear) |
|
381 -- after barrel jump |
|
382 if ((GetHealth(green2.gear) and GetY(green2.gear) > 1550 and GetX(green2.gear) < 3000 and StoppedGear(green2.gear)) |
|
383 or (GetHealth(green3.gear) and GetY(green3.gear) > 1550 and GetX(green3.gear) < 3000 and StoppedGear(green2.gear))) |
|
384 and not isHeroAtWrongPlace() then |
|
385 return true |
|
386 end |
|
387 return false |
|
388 end |
|
389 |
|
390 function onCheckPoint4(gear) |
|
391 -- hero at crates |
|
392 if not hero.dead and GetX(hero.gear) > 1288 and GetX(hero.gear) < 1420 |
|
393 and GetY(hero.gear) > 1840 and not isHeroAtWrongPlace() then |
|
394 return true |
|
395 end |
|
396 return false |
|
397 end |
321 end |
398 |
322 |
399 -------------- ACTIONS ------------------ |
323 -------------- ACTIONS ------------------ |
400 ended = false |
324 ended = false |
401 |
325 |
473 SendStat(siCustomAchievement, loc("You retrieved the lost part.")) |
397 SendStat(siCustomAchievement, loc("You retrieved the lost part.")) |
474 SendStat(siCustomAchievement, loc("You defended yourself against the Strawberry Assassins.")) |
398 SendStat(siCustomAchievement, loc("You defended yourself against the Strawberry Assassins.")) |
475 SendStat(siPlayerKills,'1',teamA.name) |
399 SendStat(siPlayerKills,'1',teamA.name) |
476 SendStat(siPlayerKills,'0',teamC.name) |
400 SendStat(siPlayerKills,'0',teamC.name) |
477 EndGame() |
401 EndGame() |
478 end |
|
479 |
|
480 function checkPoint1(gear) |
|
481 saveCheckPointLocal(2) |
|
482 end |
|
483 |
|
484 function checkPoint2(gear) |
|
485 saveCheckPointLocal(3) |
|
486 end |
|
487 |
|
488 function checkPoint3(gear) |
|
489 saveCheckPointLocal(4) |
|
490 end |
|
491 |
|
492 function checkPoint4(gear) |
|
493 saveCheckPointLocal(5) |
|
494 end |
402 end |
495 |
403 |
496 -------------- ANIMATIONS ------------------ |
404 -------------- ANIMATIONS ------------------ |
497 |
405 |
498 function Skipanim(anim) |
406 function Skipanim(anim) |
554 |
462 |
555 function wind() |
463 function wind() |
556 SetWind(GetRandom(201)-100) |
464 SetWind(GetRandom(201)-100) |
557 end |
465 end |
558 |
466 |
559 function saveHogsPositions() |
|
560 local positions; |
|
561 positions = GetX(hero.gear)..","..GetY(hero.gear) |
|
562 if GetHealth(green2.gear) then |
|
563 positions = positions..","..GetX(green2.gear)..","..GetY(green2.gear) |
|
564 else |
|
565 positions = positions..",1,1" |
|
566 end |
|
567 if GetHealth(green3.gear) then |
|
568 positions = positions..","..GetX(green3.gear)..","..GetY(green3.gear) |
|
569 else |
|
570 positions = positions..",1,1" |
|
571 end |
|
572 SaveCampaignVar("HogsPosition", positions) |
|
573 end |
|
574 |
|
575 function loadHogsPositions() |
|
576 local positions; |
|
577 if GetCampaignVar("HogsPosition") then |
|
578 positions = GetCampaignVar("HogsPosition") |
|
579 else |
|
580 return |
|
581 end |
|
582 positions = split(positions,",") |
|
583 if positions[1] then |
|
584 hero.x = positions[1] |
|
585 hero.y = positions[2] |
|
586 end |
|
587 if positions[3] then |
|
588 green2.x = tonumber(positions[3]) |
|
589 green2.y = tonumber(positions[4]) |
|
590 end |
|
591 if positions[5] then |
|
592 green3.x = tonumber(positions[5]) |
|
593 green3.y = tonumber(positions[6]) |
|
594 end |
|
595 end |
|
596 |
|
597 function saveWeapons() |
|
598 -- firepunch - gilder - deagle - watermelon - sniper |
|
599 SaveCampaignVar("HeroAmmo", GetAmmoCount(hero.gear, amFirePunch)..GetAmmoCount(hero.gear, amGirder).. |
|
600 GetAmmoCount(hero.gear, amDEagle)..GetAmmoCount(hero.gear, amWatermelon)..GetAmmoCount(hero.gear, amSniperRifle)) |
|
601 end |
|
602 |
|
603 function loadWeapons() |
|
604 local ammo = GetCampaignVar("HeroAmmo") |
|
605 AddAmmo(hero.gear, amFirePunch, tonumber(ammo:sub(1,1))) |
|
606 AddAmmo(hero.gear, amGirder, tonumber(ammo:sub(2,2))) |
|
607 AddAmmo(hero.gear, amDEagle, tonumber(ammo:sub(3,3))) |
|
608 AddAmmo(hero.gear, amWatermelon, tonumber(ammo:sub(4,4))) |
|
609 AddAmmo(hero.gear, amSniperRifle, tonumber(ammo:sub(5,5))) |
|
610 end |
|
611 |
|
612 function isHeroAtWrongPlace() |
|
613 if GetX(hero.gear) > 1480 and GetX(hero.gear) < 1892 and GetY(hero.gear) > 1000 and GetY(hero.gear) < 1220 then |
|
614 return true |
|
615 end |
|
616 return false |
|
617 end |
|
618 |
|
619 function saveCheckPointLocal(cpoint) |
|
620 AnimCaption(hero.gear, loc("Checkpoint reached!"), 3000) |
|
621 saveCheckpoint(cpoint) |
|
622 SaveCampaignVar("HeroHealth", GetHealth(hero.gear)) |
|
623 saveHogsPositions() |
|
624 saveWeapons() |
|
625 end |
|