# HG changeset patch # User Wuzzy # Date 1506734923 -7200 # Node ID 9bdcd73a40211b624fdda54ec4f13233422a553d # Parent f1e0fa009eb7bf6b74af5a9cf818aa308c25a755 ASA, fruit01: Improve mission texts and choice dialog handling diff -r f1e0fa009eb7 -r 9bdcd73a4021 share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit01.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit01.lua Sat Sep 30 02:09:43 2017 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit01.lua Sat Sep 30 03:28:43 2017 +0200 @@ -23,6 +23,7 @@ -- globals local missionName = loc("Bad timing") local chooseToBattle = false +local awaitingInput = false local previousHog = 0 local heroPlayedFirstTurn = false local startBattleCalled = false @@ -30,11 +31,18 @@ local dialog01 = {} local dialog02 = {} local dialog03 = {} + -- mission objectives local goals = { - [dialog01] = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer."), 1, 7000}, - [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have chosen to fight! Lead the Green Bananas to battle and eliminate all the enemies!"), 1, 7000}, - [dialog03] = {missionName, loc("Time to run!"), loc("You have chosen to flee ... Unfortunately, the only place where you can launch your saucer is the left-most place on the map."), 1, 7000}, + [dialog01] = {missionName, loc("Ready for Battle?"), + loc("Captain Lime offered his help if you assist him in battle.").."|".. + loc("What do you want to do?").."| |".. + loc("Fight: Press [Left]").."|".. + loc("Flee: Press [Right]"), 1, 9999000}, + [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have chosen to fight!").."|"..loc("Lead the Green Bananas to battle and eliminate all the enemies!"), 1, 7000}, + [dialog03] = {missionName, loc("Time to run!"), loc("You have chosen to flee.").."|"..loc("You have to reach the left-most place on the map."), 1, 7000}, + ["fight"] = {missionName, loc("Ready for Battle?"), loc("You have chosen to fight!"), 1, 1500}, + ["flee"] = {missionName, loc("Ready for Battle?"), loc("You have chosen to flee."), 1, 1500}, } -- crates local crateWMX = 2170 @@ -152,11 +160,11 @@ end function onGameStart() + AnimSetInputMask(0) AnimWait(hero.gear, 3000) FollowGear(hero.gear) AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0) - AddEvent(onHeroSelect, {hero.gear}, heroSelect, {hero.gear}, 0) -- Green team weapons local greenArmy = { green1, green2 } @@ -309,13 +317,6 @@ return escape end -function onHeroSelect(gear) - if GetX(hero.gear) ~= hero.x then - return true - end - return false -end - -------------- ACTIONS ------------------ function heroDeath(gear) @@ -344,16 +345,17 @@ EndGame() end -function heroSelect(gear) - EndTurn(true) +function heroSelect() + awaitingInput = false FollowGear(hero.gear) - if GetX(hero.gear) < hero.x then + if chooseToBattle == true then chooseToBattle = true + ShowMission(unpack(goals["fight"])) AddEvent(onGreen1Death, {green1.gear}, green1Death, {green1.gear}, 0) AddEvent(onBattleWin, {hero.gear}, battleWin, {hero.gear}, 0) AddAnim(dialog02) - elseif GetX(hero.gear) > hero.x then - HogTurnLeft(hero.gear, true) + else + ShowMission(unpack(goals["flee"])) AddAmmo(green1.gear, amSwitch, 100) AddEvent(onEscapeWin, {hero.gear}, escapeWin, {hero.gear}, 0) local greenTeam = { green2, green3, green4, green5 } @@ -366,12 +368,17 @@ -------------- ANIMATIONS ------------------ +function AfterDialog01() + AnimSwitchHog(hero.gear) + awaitingInput = true +end + function Skipanim(anim) if goals[anim] ~= nil then ShowMission(unpack(goals[anim])) end if anim == dialog01 then - AnimSwitchHog(hero.gear) + AfterDialog01() elseif anim == dialog02 or anim == dialog03 then startBattle() end @@ -380,7 +387,7 @@ function AnimationSetup() -- DIALOG 01 - Start, Captain Lime talks explains to Hog Solo AddSkipFunction(dialog01, Skipanim, {dialog01}) - table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}}) + table.insert(dialog01, {func = AnimWait, args = {hero.gear, 1000}}) table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere on the Planet of Fruits a terrible war is about to begin ..."), 5000}}) table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("I was told that as the leader of the king's guard, no one knows this world better than you!"), SAY_SAY, 5000}}) table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("So, I kindly ask for your help."), SAY_SAY, 3000}}) @@ -393,10 +400,10 @@ table.insert(dialog01, {func = AnimSay, args = {green1.gear, loc("What do you say? Will you fight for us?"), SAY_SAY, 3000}}) table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}}) table.insert(dialog01, {func = ShowMission, args = goals[dialog01]}) - table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}}) + table.insert(dialog01, {func = AfterDialog01, args = {}}) -- DIALOG 02 - Hero selects to fight AddSkipFunction(dialog02, Skipanim, {dialog02}) - table.insert(dialog02, {func = AnimWait, args = {green1.gear, 3000}}) + table.insert(dialog02, {func = AnimWait, args = {green1.gear, 400}}) table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("You choose well, Hog Solo!"), SAY_SAY, 3000}}) table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("I have only 3 hogs available and they are all cadets."), SAY_SAY, 4000}}) table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("As you are more experienced, I want you to lead them to battle."), SAY_SAY, 4000}}) @@ -412,7 +419,7 @@ table.insert(dialog02, {func = startBattle, args = {hero.gear}}) -- DIALOG 03 - Hero selects to flee AddSkipFunction(dialog03, Skipanim, {dialog03}) - table.insert(dialog03, {func = AnimWait, args = {green1.gear, 3000}}) + table.insert(dialog03, {func = AnimWait, args = {green1.gear, 400}}) table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Too bad! Then you should really leave!"), SAY_SAY, 3000}}) table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Things are going to get messy around here."), SAY_SAY, 3000}}) table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Also, you should know that the only place where you can fly is the left-most part of this area."), SAY_SAY, 5000}}) @@ -426,6 +433,7 @@ ------------- OTHER FUNCTIONS --------------- function startBattle() + AnimSetInputMask(0xFFFFFFFF) -- Hog Solo weapons AddAmmo(hero.gear, amRope, 2) AddAmmo(hero.gear, amBazooka, 3) @@ -488,3 +496,22 @@ SaveCampaignVar("Mission3", "10") SaveCampaignVar("Mission4", "1") end + + +function onRight() + if awaitingInput then + PlaySound(sndPlaced) + PlaySound(sndCoward, green1.gear) + chooseToBattle = false + heroSelect() + end +end + +function onLeft() + if awaitingInput then + PlaySound(sndPlaced) + PlaySound(sndYesSir, hero.gear) + chooseToBattle = true + heroSelect() + end +end