diff -r 003b7384a90a -r cd747aefcba1 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua Sat Aug 18 14:22:54 2012 +0300 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua Sat Aug 18 14:24:27 2012 +0300 @@ -185,7 +185,7 @@ SetupPlace3() SetGearMessage(natives[1], 0) AddNewEvent(CheckPrincessFreed, {}, DoPrincessFreed, {}, 0) - TurnTimeLeft = TurnTime + TurnTimeLeft = 0 ShowMission(loc("Family Reunion"), loc("Salvation"), loc("Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything."), 1, 7000) end @@ -235,8 +235,10 @@ for i = 1, cyborgsNum do AddNewEvent(CheckGearDead, {cyborgs[i]}, DoCyborgDead, {i}, 0) end + AddNewEvent(CheckOutOfCluster, {}, DoOutOfCluster, {}, 1) + AddNewEvent(CheckOutOfGrenade, {}, DoOutOfGrenade, {}, 1) TurnTimeLeft = TurnTime - ShowMission(loc("Family Reunion"), loc("Hostage Situation"), loc("Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!"), 1, 7000) + ShowMission(loc("Family Reunion"), loc("Hostage Situation"), loc("Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"), 1, 7000) end function SetupPlace2() @@ -251,11 +253,11 @@ PlaceGirder(2110, 980, 0) SpawnAmmoCrate(814, 407, amBazooka, 8) - SpawnAmmoCrate(862, 494, amClusterBomb, 8) + clusterCrate = SpawnAmmoCrate(862, 494, amClusterBomb, 8) SpawnAmmoCrate(855, 486, amBee, 5) - SpawnAmmoCrate(849, 459, amGrenade, 8) + grenadeCrate1 = SpawnAmmoCrate(849, 459, amGrenade, 8) SpawnAmmoCrate(2077, 847, amWatermelon, 3) - SpawnAmmoCrate(2122, 847, amGrenade, 8) + grenadeCrate2 = SpawnAmmoCrate(2122, 847, amGrenade, 8) SpawnUtilityCrate(747, 1577, amPickHammer, 1) SpawnUtilityCrate(496, 1757, amGirder, 2) @@ -326,6 +328,32 @@ TurnTimeLeft = 0 end +function CheckOutOfCluster() + return CheckGearDead(clusterCrate) and GetAmmoCount(natives[1], amClusterBomb) == 0 +end + +function CheckOutOfGrenade() + return CheckGearDead(grenadeCrate1) and CheckGearDead(grenadeCrate2) and GetAmmoCount(natives[1], amGrenade) == 0 +end + +function DoOutOfCluster() + clusterCrate = SpawnAmmoCrate(GetX(natives[1]) - 50, GetY(natives[1]) - 50, amClusterBomb) +end + +function DoOutOfGrenade() + grenadeCrate2 = SpawnAmmoCrate(GetX(natives[1]) - 50, GetY(natives[1]) - 50, amGrenade) +end + +function CheckNeedToHide() + if gearDead[princess] == true then + return false + end + return TurnTimeLeft == 0 +end + +function DoNeedToHide() + HideHedge(princess) +end -----------------------------Misc-------------------------------------- function HideHedge(hedge) if hedgeHidden[hedge] ~= true then @@ -355,10 +383,10 @@ cyborgsNum = cyborgsNum - 1 end HideHedge(cyborg) - AddGear(princessPos[1], princessPos[2], gtCase, 0, 0, 0, 0) end function SetupEvents() + AddNewEvent(CheckNeedToHide, {}, DoNeedToHide, {}, 1) end function SetupAmmo() @@ -380,11 +408,11 @@ AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star") cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1") - princess = AddHog(loc("Fell From Heaven"), 0, 133, "tiara") + princess = AddHog(loc("Fell From Heaven"), 0, 333, "tiara") gearDead[cyborg] = false gearDead[princess] = false - AddTeam(loc("Biomechanic Team"), 14483457, "ring", "UFO", "Robot", "cm_star") + AddTeam(loc("Biomechanic Team"), 14483456, "ring", "UFO", "Robot", "cm_star") for i = 1, cyborgsNum do cyborgs[i] = AddHog(cyborgNames[i], cyborgsDif[i], cyborgsHealth[i], "cyborg2") gearDead[cyborgs[i]] = false @@ -397,6 +425,7 @@ AnimSetGearPosition(cyborg, unpack(cyborgPos)) AnimSetGearPosition(princess, unpack(princessPos)) + AnimTurn(princess, "Left") for i = 1, cyborgsNum do AnimSetGearPosition(cyborgs[i], unpack(cyborgsPos[i])) @@ -428,7 +457,7 @@ Delay = 10 MapGen = 2 Theme = "Hell" - SuddenDeathTurns = 25 + SuddenDeathTurns = 35 for i = 1, #map do ParseCommand('draw ' .. map[i]) @@ -490,10 +519,9 @@ end if GetHogTeamName(CurrentHedgehog) == loc("011101001") then TurnTimeLeft = 0 - elseif GetHogTeamName(CurrentHedgehog) == loc("Biomechanic Team") then - HideHedge(princess) else - RestoreHedge(princess) + AnimWait(princess, 10) + AddFunction({func = RestoreHedge, args = {princess}}) end end