share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/family.lua
changeset 7472 cd747aefcba1
parent 7448 d0521a3a4358
child 7484 f3a7c4e75815
equal deleted inserted replaced
7469:003b7384a90a 7472:cd747aefcba1
   183 function AfterMidAnim()
   183 function AfterMidAnim()
   184   HideHedge(cyborg)
   184   HideHedge(cyborg)
   185   SetupPlace3()
   185   SetupPlace3()
   186   SetGearMessage(natives[1], 0)
   186   SetGearMessage(natives[1], 0)
   187   AddNewEvent(CheckPrincessFreed, {}, DoPrincessFreed, {}, 0)
   187   AddNewEvent(CheckPrincessFreed, {}, DoPrincessFreed, {}, 0)
   188   TurnTimeLeft = TurnTime
   188   TurnTimeLeft = 0
   189   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)
   189   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)
   190 end
   190 end
   191   
   191   
   192 function SetupPlace3()
   192 function SetupPlace3()
   193   SpawnUtilityCrate(2086, 1887, amRope, 1)
   193   SpawnUtilityCrate(2086, 1887, amRope, 1)
   233   AddNewEvent(CheckGearDead, {princess}, EndMission, {}, 0)
   233   AddNewEvent(CheckGearDead, {princess}, EndMission, {}, 0)
   234   AddNewEvent(CheckCyborgsDead, {}, DoCyborgsDead, {}, 0)
   234   AddNewEvent(CheckCyborgsDead, {}, DoCyborgsDead, {}, 0)
   235   for i = 1, cyborgsNum do
   235   for i = 1, cyborgsNum do
   236     AddNewEvent(CheckGearDead, {cyborgs[i]}, DoCyborgDead, {i}, 0)
   236     AddNewEvent(CheckGearDead, {cyborgs[i]}, DoCyborgDead, {i}, 0)
   237   end
   237   end
       
   238   AddNewEvent(CheckOutOfCluster, {}, DoOutOfCluster, {}, 1)
       
   239   AddNewEvent(CheckOutOfGrenade, {}, DoOutOfGrenade, {}, 1)
   238   TurnTimeLeft = TurnTime
   240   TurnTimeLeft = TurnTime
   239   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)
   241   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)
   240 end
   242 end
   241 
   243 
   242 function SetupPlace2()
   244 function SetupPlace2()
   243 	PlaceGirder(709, 564, 7)
   245 	PlaceGirder(709, 564, 7)
   244 	PlaceGirder(591, 677, 7)
   246 	PlaceGirder(591, 677, 7)
   249 	PlaceGirder(710, 1310, 7)
   251 	PlaceGirder(710, 1310, 7)
   250 	PlaceGirder(648, 1427, 5)
   252 	PlaceGirder(648, 1427, 5)
   251   PlaceGirder(2110, 980, 0)
   253   PlaceGirder(2110, 980, 0)
   252 
   254 
   253 	SpawnAmmoCrate(814, 407, amBazooka, 8)
   255 	SpawnAmmoCrate(814, 407, amBazooka, 8)
   254 	SpawnAmmoCrate(862, 494, amClusterBomb, 8)
   256 	clusterCrate = SpawnAmmoCrate(862, 494, amClusterBomb, 8)
   255 	SpawnAmmoCrate(855, 486, amBee, 5)
   257 	SpawnAmmoCrate(855, 486, amBee, 5)
   256 	SpawnAmmoCrate(849, 459, amGrenade, 8)
   258 	grenadeCrate1 = SpawnAmmoCrate(849, 459, amGrenade, 8)
   257 	SpawnAmmoCrate(2077, 847, amWatermelon, 3)
   259 	SpawnAmmoCrate(2077, 847, amWatermelon, 3)
   258 	SpawnAmmoCrate(2122, 847, amGrenade, 8)
   260 	grenadeCrate2 = SpawnAmmoCrate(2122, 847, amGrenade, 8)
   259 
   261 
   260 	SpawnUtilityCrate(747, 1577, amPickHammer, 1)
   262 	SpawnUtilityCrate(747, 1577, amPickHammer, 1)
   261 	SpawnUtilityCrate(496, 1757, amGirder, 2)
   263 	SpawnUtilityCrate(496, 1757, amGirder, 2)
   262   SpawnUtilityCrate(1809, 1880, amGirder, 1)
   264   SpawnUtilityCrate(1809, 1880, amGirder, 1)
   263 	SpawnUtilityCrate(530, 1747, amPortalGun, 1)
   265 	SpawnUtilityCrate(530, 1747, amPortalGun, 1)
   324   ParseCommand("teamgone " .. loc("Natives"))
   326   ParseCommand("teamgone " .. loc("Natives"))
   325   ParseCommand("teamgone " .. loc("011101001"))
   327   ParseCommand("teamgone " .. loc("011101001"))
   326   TurnTimeLeft = 0
   328   TurnTimeLeft = 0
   327 end
   329 end
   328 
   330 
       
   331 function CheckOutOfCluster()
       
   332   return CheckGearDead(clusterCrate) and GetAmmoCount(natives[1], amClusterBomb) == 0
       
   333 end
       
   334 
       
   335 function CheckOutOfGrenade()
       
   336   return CheckGearDead(grenadeCrate1) and CheckGearDead(grenadeCrate2) and GetAmmoCount(natives[1], amGrenade) == 0
       
   337 end
       
   338 
       
   339 function DoOutOfCluster()
       
   340   clusterCrate = SpawnAmmoCrate(GetX(natives[1]) - 50, GetY(natives[1]) - 50, amClusterBomb)
       
   341 end
       
   342 
       
   343 function DoOutOfGrenade()
       
   344   grenadeCrate2 = SpawnAmmoCrate(GetX(natives[1]) - 50, GetY(natives[1]) - 50, amGrenade)
       
   345 end
       
   346 
       
   347 function CheckNeedToHide()
       
   348   if gearDead[princess] == true then
       
   349     return false
       
   350   end
       
   351   return TurnTimeLeft == 0
       
   352 end
       
   353 
       
   354 function DoNeedToHide()
       
   355   HideHedge(princess)
       
   356 end
   329 -----------------------------Misc--------------------------------------
   357 -----------------------------Misc--------------------------------------
   330 function HideHedge(hedge)
   358 function HideHedge(hedge)
   331   if hedgeHidden[hedge] ~= true then
   359   if hedgeHidden[hedge] ~= true then
   332     HideHog(hedge)
   360     HideHog(hedge)
   333     hedgeHidden[hedge] = true
   361     hedgeHidden[hedge] = true
   353   if m2Choice ~= choiceAccepted or m5Choice ~= choiceEliminate then
   381   if m2Choice ~= choiceAccepted or m5Choice ~= choiceEliminate then
   354     DeleteGear(cyborgs[cyborgsNum])
   382     DeleteGear(cyborgs[cyborgsNum])
   355     cyborgsNum = cyborgsNum - 1
   383     cyborgsNum = cyborgsNum - 1
   356   end
   384   end
   357   HideHedge(cyborg)
   385   HideHedge(cyborg)
   358   AddGear(princessPos[1], princessPos[2], gtCase, 0, 0, 0, 0)
       
   359 end
   386 end
   360 
   387 
   361 function SetupEvents()
   388 function SetupEvents()
       
   389   AddNewEvent(CheckNeedToHide, {}, DoNeedToHide, {}, 1)
   362 end
   390 end
   363 
   391 
   364 function SetupAmmo()
   392 function SetupAmmo()
   365   AddAmmo(cyborgs[1], amBazooka, 100)
   393   AddAmmo(cyborgs[1], amBazooka, 100)
   366   AddAmmo(cyborgs[1], amGrenade, 100)
   394   AddAmmo(cyborgs[1], amGrenade, 100)
   378     gearDead[natives[i-6]] = false
   406     gearDead[natives[i-6]] = false
   379   end
   407   end
   380 
   408 
   381   AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star")
   409   AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star")
   382   cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1")
   410   cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1")
   383   princess = AddHog(loc("Fell From Heaven"), 0, 133, "tiara")
   411   princess = AddHog(loc("Fell From Heaven"), 0, 333, "tiara")
   384   gearDead[cyborg] = false
   412   gearDead[cyborg] = false
   385   gearDead[princess] = false
   413   gearDead[princess] = false
   386 
   414 
   387   AddTeam(loc("Biomechanic Team"), 14483457, "ring", "UFO", "Robot", "cm_star")
   415   AddTeam(loc("Biomechanic Team"), 14483456, "ring", "UFO", "Robot", "cm_star")
   388   for i = 1, cyborgsNum do
   416   for i = 1, cyborgsNum do
   389     cyborgs[i] = AddHog(cyborgNames[i], cyborgsDif[i], cyborgsHealth[i], "cyborg2")
   417     cyborgs[i] = AddHog(cyborgNames[i], cyborgsDif[i], cyborgsHealth[i], "cyborg2")
   390     gearDead[cyborgs[i]] = false
   418     gearDead[cyborgs[i]] = false
   391   end
   419   end
   392   cyborgsLeft = cyborgsNum
   420   cyborgsLeft = cyborgsNum
   395     AnimSetGearPosition(natives[i], unpack(nativePos[i]))
   423     AnimSetGearPosition(natives[i], unpack(nativePos[i]))
   396   end
   424   end
   397 
   425 
   398   AnimSetGearPosition(cyborg, unpack(cyborgPos))
   426   AnimSetGearPosition(cyborg, unpack(cyborgPos))
   399   AnimSetGearPosition(princess, unpack(princessPos))
   427   AnimSetGearPosition(princess, unpack(princessPos))
       
   428   AnimTurn(princess, "Left")
   400 
   429 
   401   for i = 1, cyborgsNum do
   430   for i = 1, cyborgsNum do
   402     AnimSetGearPosition(cyborgs[i], unpack(cyborgsPos[i]))
   431     AnimSetGearPosition(cyborgs[i], unpack(cyborgsPos[i]))
   403     AnimTurn(cyborgs[i], cyborgsDir[i])
   432     AnimTurn(cyborgs[i], cyborgsDir[i])
   404   end
   433   end
   426 	MinesTime = 3000
   455 	MinesTime = 3000
   427 	Explosives = 0
   456 	Explosives = 0
   428 	Delay = 10 
   457 	Delay = 10 
   429   MapGen = 2
   458   MapGen = 2
   430 	Theme = "Hell"
   459 	Theme = "Hell"
   431   SuddenDeathTurns = 25
   460   SuddenDeathTurns = 35
   432 
   461 
   433 	for i = 1, #map do
   462 	for i = 1, #map do
   434 		ParseCommand('draw ' .. map[i])
   463 		ParseCommand('draw ' .. map[i])
   435 	end
   464 	end
   436 
   465 
   488     TurnTimeLeft = -1
   517     TurnTimeLeft = -1
   489     return
   518     return
   490   end
   519   end
   491   if GetHogTeamName(CurrentHedgehog) == loc("011101001") then
   520   if GetHogTeamName(CurrentHedgehog) == loc("011101001") then
   492     TurnTimeLeft = 0
   521     TurnTimeLeft = 0
   493   elseif GetHogTeamName(CurrentHedgehog) == loc("Biomechanic Team") then
       
   494     HideHedge(princess)
       
   495   else
   522   else
   496     RestoreHedge(princess)
   523     AnimWait(princess, 10)
       
   524     AddFunction({func = RestoreHedge, args = {princess}})
   497   end
   525   end
   498 end
   526 end
   499 
   527 
   500 function onGearDamage(gear, damage)
   528 function onGearDamage(gear, damage)
   501 end
   529 end