diff -r a7f861f1c3b8 -r d0521a3a4358 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Fri Aug 10 00:20:52 2012 +0300 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Fri Aug 10 04:26:58 2012 +0300 @@ -71,6 +71,7 @@ deployedHog = nil cyborgHidden = false +needToAct = 0 m2Choice = 0 m2DenseDead = 0 @@ -95,6 +96,7 @@ wave2DeadAnim = {} wave3DeadAnim = {} +vCircs = {} -----------------------------Animations-------------------------------- function Wave2Reaction() local i = 1 @@ -217,7 +219,7 @@ function ExplainAlive() if needRevival == true and m4WaterDead == 1 then RestoreCyborg() - SetGearPosition(cyborg, unpack(cyborgPos)) + AnimSetGearPosition(cyborg, unpack(cyborgPos)) AnimInsertStepNext({func = AnimCustomFunction, args = {water, HideCyborg, {}}}) AnimInsertStepNext({func = AnimSwitchHog, args = {water}}) AnimInsertStepNext({func = AnimSay, args = {cyborg, loc("The answer is...entertaintment. You'll see what I mean."), SAY_SAY, 8000}}) @@ -304,6 +306,19 @@ AddSkipFunction(wave2Anim, SkipWave2Anim, {}) end +function PutCircles() + if circlesPut then + return + end + vCircs[1] = AddVisualGear(0,0,vgtCircle,0,true) + vCircs[2] = AddVisualGear(0,0,vgtCircle,0,true) + vCircs[3] = AddVisualGear(0,0,vgtCircle,0,true) + SetVisualGearValues(vCircs[1], cannibalPos[7][1], cannibalPos[7][2], 100, 255, 1, 10, 0, 120, 3, 0xff00ffff) + SetVisualGearValues(vCircs[2], cannibalPos[8][1], cannibalPos[8][2], 100, 255, 1, 10, 0, 120, 3, 0xff00ffff) + SetVisualGearValues(vCircs[3], cannibalPos[9][1], cannibalPos[9][2], 100, 255, 1, 10, 0, 120, 3, 0xff00ffff) + circlesPut = true +end + function SetupWave2DeadAnim() for i = 7, 1, -1 do if nativeDead[i] ~= true then @@ -321,10 +336,10 @@ table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], TurnNatives, {natives[wiseNum]}}}) table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], CondNeedToTurn, {natives[wiseNum], deployedHog}}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I sense another wave of cannibals heading our way!"), SAY_SAY, 6500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I feel something...a place! They will arrive near the graves!"), SAY_SAY, 7500}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[7][1], cannibalPos[7][2], gtGrave, 0, 0, 0, 0}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[8][1], cannibalPos[8][2], gtGrave, 0, 0, 0, 0}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[9][1], cannibalPos[9][2], gtGrave, 0, 0, 0, 0}}) + table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I feel something...a place! They will arrive near the circles!"), SAY_SAY, 7500}}) + table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], PutCircles, {}}}) + table.insert(wave2DeadAnim, {func = AnimFollowGear, swh = false, args = {vCircs[1]}}) + table.insert(wave2DeadAnim, {func = AnimWait, args = {natives[wiseNum], 1500}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("We need to prevent their arrival!"), SAY_SAY, 4500}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("Go, quick!"), SAY_SAY, 2500}}) table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], DeployHog, {}}}) @@ -342,10 +357,9 @@ table.insert(wave2DeadAnim, {func = AnimWait, args = {natives[wiseNum], 1500}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("What a strange feeling!"), SAY_THINK, 3000}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I sense another wave of cannibals heading my way!"), SAY_THINK, 6500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I feel something...a place! They will arrive near the graves!"), SAY_SAY, 7500}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[7][1], cannibalPos[7][2], gtGrave, 0, 0, 0, 0}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[8][1], cannibalPos[8][2], gtGrave, 0, 0, 0, 0}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[9][1], cannibalPos[9][2], gtGrave, 0, 0, 0, 0}}) + table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I feel something...a place! They will arrive near the circles!"), SAY_SAY, 7500}}) + table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], PutCircles, {}}}) + table.insert(wave2DeadAnim, {func = AnimFollowGear, swh = false, args = {vCircs[1]}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I need to prevent their arrival!"), SAY_THINK, 4500}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("If only I had a way..."), SAY_THINK, 3000}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("Oh, silly me! I forgot that I'm the shaman."), SAY_THINK, 6000}}) @@ -354,15 +368,15 @@ table.insert(wave2DeadAnim, {func = AnimWait, args = {cyborg, 1500}}) table.insert(wave2DeadAnim, {func = AnimCustomFunction, swh = false, args = {cyborg, RestoreCyborg, {}}}) table.insert(wave2DeadAnim, {func = AnimOutOfNowhere, args = {cyborg, cyborgPos2[1], cyborgPos2[2]}}) + table.insert(wave2DeadAnim, {func = AnimTurn, args = {cyborg, "Left"}}) table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, TeleportNatives, {}}}) table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, TurnNatives, {cyborg}}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("Oh, my! This is even more entertaining than I've expected!"), SAY_SAY, 7500}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("You might want to find a way to instantly kill arriving cannibals!"), SAY_SAY, 8000}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("I believe there's more of them."), SAY_SAY, 4000}}) table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("I marked the place of their arrival. You're welcome!"), SAY_SAY, 6000}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[7][1], cannibalPos[7][2], gtGrave, 0, 0, 0, 0}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[8][1], cannibalPos[8][2], gtGrave, 0, 0, 0, 0}}) - table.insert(wave2DeadAnim, {func = AddGear, swh = false, args = {cannibalPos[9][1], cannibalPos[9][2], gtGrave, 0, 0, 0, 0}}) + table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], PutCircles, {}}}) + table.insert(wave2DeadAnim, {func = AnimFollowGear, swh = false, args = {vCircs[1]}}) table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {deployedHog, DeployHog, {}}}) if nativesNum > 1 then -- table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], RestoreCyborg, {}}}) @@ -534,9 +548,7 @@ IsolateNatives() DeployHog() HideCyborg() - AddGear(cannibalPos[7][1], cannibalPos[7][2], gtGrave, 0, 0, 0, 0) - AddGear(cannibalPos[8][1], cannibalPos[8][2], gtGrave, 0, 0, 0, 0) - AddGear(cannibalPos[9][1], cannibalPos[9][2], gtGrave, 0, 0, 0, 0) + PutCircles() end function SpawnPlatformCrates() @@ -569,7 +581,7 @@ end function SkipStartAnim() - SetGearPosition(natives[waterNum], nativePos[denseNum][1] + 50, nativePos[denseNum][2]) + AnimSetGearPosition(natives[waterNum], nativePos[denseNum][1] + 50, nativePos[denseNum][2]) RestoreWave(1) ReviveNatives() SetGearMessage(CurrentHedgehog, 0) @@ -623,6 +635,7 @@ function DoChoice() RemoveEventFunc(CheckChoiceRefuse) + SetGearMessage(CurrentHedgehog, 0) SetupAfterChoiceAnim() AddAnim(afterChoiceAnim) AddFunction({func = AfterAfterChoiceAnim, args = {}}) @@ -662,19 +675,7 @@ function DoWaveDead(index) TurnTimeLeft = 0 - if index == 1 then - RestoreWave(2) - SetupWave2Anim() - AddAnim(wave2Anim) - AddFunction({func = AfterWave2Anim, args = {}}) - elseif index == 2 then - SetupWave2DeadAnim() - AddAnim(wave2DeadAnim) - AddFunction({func = AfterWave2DeadAnim, args = {}}) - elseif index == 3 then - AnimSwitchHog(deployedHog) - AddFunction({func = AddWave3DeadAnim, args = {}}) - end + needToAct = index end function AddWave3DeadAnim() @@ -859,7 +860,7 @@ end if m4ChiefDead == 1 then DeleteGear(natives[chiefNum]) - SetGearPosition(natives[girlNum], unpack(nativePos[buffaloNum])) + AnimSetGearPosition(natives[girlNum], unpack(nativePos[buffaloNum])) nativePos[girlNum] = nativePos[buffaloNum] end if m4BuffaloDead == 1 then @@ -897,26 +898,28 @@ AddTeam(loc("Assault Team"), 14483456, "Skull", "Island", "Pirate", "cm_vampire") for i = 1, 6 do - cannibals[i] = AddHog(cannibalNames[i], 1, 50, "vampirichog") +-- cannibals[i] = AddHog(cannibalNames[i], 1, 50, "vampirichog") + cannibals[i] = AddHog(cannibalNames[i], 1, 5, "vampirichog") end AddTeam(loc("Reinforcements"), 14483456, "Skull", "Island", "Pirate", "cm_vampire") for i = 7, 9 do - cannibals[i] = AddHog(cannibalNames[i], 1, 50, "vampirichog") +-- cannibals[i] = AddHog(cannibalNames[i], 1, 50, "vampirichog") + cannibals[i] = AddHog(cannibalNames[i], 1, 5, "vampirichog") end AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star") cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1") for i = 1, 9 do - SetGearPosition(natives[i], unpack(nativePos[i])) + AnimSetGearPosition(natives[i], unpack(nativePos[i])) AnimTurn(natives[i], nativeDir[i]) end - SetGearPosition(cyborg, 0, 0) + AnimSetGearPosition(cyborg, 0, 0) for i = 1, 9 do - SetGearPosition(cannibals[i], unpack(cannibalPos[i])) + AnimSetGearPosition(cannibals[i], unpack(cannibalPos[i])) AnimTurn(cannibals[i], cannibalDir[i]) end end @@ -1060,6 +1063,22 @@ AddFunction({func = AfterHogDeadAnim, args = {}}) end end + if needToAct > 0 then + if needToAct == 1 then + RestoreWave(2) + SetupWave2Anim() + AddAnim(wave2Anim) + AddFunction({func = AfterWave2Anim, args = {}}) + elseif needToAct == 2 then + SetupWave2DeadAnim() + AddAnim(wave2DeadAnim) + AddFunction({func = AfterWave2DeadAnim, args = {}}) + elseif needToAct == 3 then + AnimSwitchHog(deployedHog) + AddFunction({func = AddWave3DeadAnim, args = {}}) + end + needToAct = 0 + end end function onGearDamage(gear, damage)