share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/dragon.lua
changeset 7675 58620e9e5ed5
parent 7530 0ba32e5412ce
child 8043 da083f8d95e6
equal deleted inserted replaced
7673:e06b83cbde74 7675:58620e9e5ed5
   166 startAnim = {}
   166 startAnim = {}
   167 killAnim = {}
   167 killAnim = {}
   168 killedAnim = {}
   168 killedAnim = {}
   169 
   169 
   170 freshDead = nil
   170 freshDead = nil
   171 retry = false
       
   172 crates = {}
   171 crates = {}
   173 cratesNum = 0
   172 cratesNum = 0
   174 jetCrate = nil
   173 jetCrate = nil
   175 -----------------------------Animations--------------------------------
   174 -----------------------------Animations--------------------------------
   176 function EmitDenseClouds(dir)
   175 function EmitDenseClouds(dir)
   403   SaveCampaignVar("Progress", "6")
   402   SaveCampaignVar("Progress", "6")
   404   ParseCommand("teamgone " .. loc("011101001"))
   403   ParseCommand("teamgone " .. loc("011101001"))
   405   TurnTimeLeft = 0
   404   TurnTimeLeft = 0
   406 end
   405 end
   407 
   406 
   408 function DoRetry()
       
   409   AnimSetGearPosition(native, unpack(nativePos))
       
   410   for i = 1, cratesNum do
       
   411     if gearDead[crates[i]] ~= true then
       
   412       DeleteGear(crates[i])
       
   413       gearDead[crates[i]] = false
       
   414     end
       
   415   end
       
   416   SetupEvents()
       
   417   AddFunction({func = AfterStartAnim, args = {}})
       
   418   retry = false
       
   419 end
       
   420 
       
   421 
       
   422 function CheckGearsDead(gearList)
   407 function CheckGearsDead(gearList)
   423   for i = 1, # gearList do
   408   for i = 1, # gearList do
   424     if gearDead[gearList[i]] ~= true then
   409     if gearDead[gearList[i]] ~= true then
   425       return false
   410       return false
   426     end
   411     end
   428   return true
   413   return true
   429 end
   414 end
   430 
   415 
   431 
   416 
   432 function CheckGearDead(gear)
   417 function CheckGearDead(gear)
   433   return gearDead[gear] and retry == false
   418   return gearDead[gear]
   434 end
   419 end
   435 
   420 
   436 function EndMission()
   421 function EndMission()
   437   ParseCommand("teamgone " .. loc("Natives"))
   422   ParseCommand("teamgone " .. loc("Natives"))
   438   ParseCommand("teamgone " .. loc("011101001"))
   423   ParseCommand("teamgone " .. loc("011101001"))
   477       native = natives[i]
   462       native = natives[i]
   478     end
   463     end
   479   end
   464   end
   480   HideHedge(cyborg)
   465   HideHedge(cyborg)
   481   jetCrate = SpawnUtilityCrate(3915, 1723, amJetpack)
   466   jetCrate = SpawnUtilityCrate(3915, 1723, amJetpack)
       
   467 
       
   468   SetTimer(AddGear(1071, 1913, gtMine, 0, 0, 0, 0), 5000)
       
   469   SetTimer(AddGear(1098, 1919, gtMine, 0, 0, 0, 0), 5000)
       
   470   SetTimer(AddGear(1136, 1923, gtMine, 0, 0, 0, 0), 5000)
       
   471   SetTimer(AddGear(1170, 1930, gtMine, 0, 0, 0, 0), 5000)
       
   472   SetTimer(AddGear(1203, 1924, gtMine, 0, 0, 0, 0), 5000)
       
   473   SetTimer(AddGear(1228, 1939, gtMine, 0, 0, 0, 0), 5000)
       
   474   SetTimer(AddGear(1264, 1931, gtMine, 0, 0, 0, 0), 5000)
       
   475   SetTimer(AddGear(1309, 1938, gtMine, 0, 0, 0, 0), 5000)
       
   476   SetTimer(AddGear(1352, 1936, gtMine, 0, 0, 0, 0), 5000)
       
   477   SetTimer(AddGear(1386, 1939, gtMine, 0, 0, 0, 0), 5000)
       
   478   SetTimer(AddGear(1432, 1942, gtMine, 0, 0, 0, 0), 5000)
       
   479   SetTimer(AddGear(1483, 1950, gtMine, 0, 0, 0, 0), 5000)
       
   480   SetTimer(AddGear(1530, 1954, gtMine, 0, 0, 0, 0), 5000)
       
   481   SetTimer(AddGear(1579, 1959, gtMine, 0, 0, 0, 0), 5000)
       
   482   SetTimer(AddGear(1000, 1903, gtMine, 0, 0, 0, 0), 5000)
       
   483   SetTimer(AddGear(957, 1903, gtMine, 0, 0, 0, 0), 5000)
       
   484   SetTimer(AddGear(909, 1910, gtMine, 0, 0, 0, 0), 5000)
       
   485   SetTimer(AddGear(889, 1917, gtMine, 0, 0, 0, 0), 5000)
       
   486   ------ STICKY MINE LIST ------
       
   487   tempG = AddGear(1199, 733, gtSMine, 0, 0, 0, 0)
       
   488   tempG = AddGear(1195, 793, gtSMine, 0, 0, 0, 0)
       
   489   tempG = AddGear(1201, 861, gtSMine, 0, 0, 0, 0)
       
   490   tempG = AddGear(682, 878, gtSMine, 0, 0, 0, 0)
       
   491   tempG = AddGear(789, 876, gtSMine, 0, 0, 0, 0)
   482 end
   492 end
   483 
   493 
   484 function SetupEvents()
   494 function SetupEvents()
   485   AddNewEvent(CheckMissionFinished, {}, DoMissionFinished, {}, 0)
   495   AddNewEvent(CheckMissionFinished, {}, DoMissionFinished, {}, 0)
   486   AddNewEvent(CheckGearDead, {native}, EndMission, {}, 0)
   496   AddNewEvent(CheckGearDead, {native}, EndMission, {}, 0)
   611         else
   621         else
   612           HogTurnLeft(cyborgs[i], true)
   622           HogTurnLeft(cyborgs[i], true)
   613         end
   623         end
   614       end
   624       end
   615     end
   625     end
       
   626     if TotalRounds % 6 == 0 then
       
   627       AddAmmo(CurrentHedgehog, amSniperRifle, 1)
       
   628       AddAmmo(CurrentHedgehog, amDEagle, 1)
       
   629     end
   616     TurnTimeLeft = 30000
   630     TurnTimeLeft = 30000
   617   elseif GetHogTeamName(CurrentHedgehog) == loc("011101001") then
   631   elseif GetHogTeamName(CurrentHedgehog) == loc("011101001") then
   618     TurnTimeLeft = 0
   632     TurnTimeLeft = 0
   619   else
   633   else
   620     SetInputMask(0xFFFFFFFF)
   634     SetInputMask(0xFFFFFFFF)
   621     AddCaption(loc("Turns until Sudden Death: ") .. SuddenDeathTurns - TotalRounds)
   635     AddCaption(loc("Turns until Sudden Death: ") .. SuddenDeathTurns - TotalRounds)
   622     if retry == true then
       
   623       DoRetry()
       
   624     end
       
   625   end
   636   end
   626 end
   637 end
   627 
   638 
   628 function onPrecise()
   639 function onPrecise()
   629   if GameTime > 2500 and AnimInProgress() then
   640   if GameTime > 2500 and AnimInProgress() then
   630     SetAnimSkip(true)
   641     SetAnimSkip(true)
   631   end
   642   end
   632   if AnimInProgress() == false then
   643   if AnimInProgress() == false then
   633     retry = true
       
   634   end
   644   end
   635 end
   645 end
   636 
   646 
   637 function onPreciseUp()
   647 function onPreciseUp()
   638   retry = false
   648 end
   639 end