# HG changeset patch # User Periklis Ntanasis # Date 1378170079 -10800 # Node ID 6af4ca27421ae6da759a17357009f0ae12f5f725 # Parent 7daf157d8b5256d5f45c6b36a913fdb4943e7d5c added death planet side mission diff -r 7daf157d8b52 -r 6af4ca27421a share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/campaign.ini --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/campaign.ini Mon Sep 02 18:57:30 2013 +0300 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/campaign.ini Tue Sep 03 04:01:19 2013 +0300 @@ -40,3 +40,7 @@ [Mission 10] Name=Side Mission: Precise shooting Script=fruit03.lua + +[Mission 11] +Name=Side Mission: Killing the specialists +Script=death02.lua diff -r 7daf157d8b52 -r 6af4ca27421a share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua Mon Sep 02 18:57:30 2013 +0300 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua Tue Sep 03 04:01:19 2013 +0300 @@ -414,9 +414,10 @@ else AnimCaption(hero.gear,loc("Welcome to the Death Planet!")) SaveCampaignVar("Planet", "deathPlanet") - SaveCampaignVar("UnlockedMissions", "2") + SaveCampaignVar("UnlockedMissions", "3") SaveCampaignVar("Mission1", "9") - SaveCampaignVar("Mission2", "1") + SaveCampaignVar("Mission2", "11") + SaveCampaignVar("Mission3", "1") sendStats(loc("the Planet of Death")) end end diff -r 7daf157d8b52 -r 6af4ca27421a share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.hwp Binary file share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.hwp has changed diff -r 7daf157d8b52 -r 6af4ca27421a share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.lua Tue Sep 03 04:01:19 2013 +0300 @@ -0,0 +1,252 @@ +------------------- ABOUT ---------------------- +-- +-- Hero has been surrounded my some space villains +-- He has to defeat them in order to escape + +HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Animate.lua") +HedgewarsScriptLoad("/Missions/Campaign/A_Space_Adventure/global_functions.lua") + +----------------- VARIABLES -------------------- +-- globals +local missionName = loc("Killing the specialists") +local challengeObjectives = loc("Use your available weapons in order to eliminate the enemies").."|".. + loc("Each time you play this missions enemy hogs will have a random playing order").."|".. + loc("Each enemy hog can use only the weapon that he is named of").."|".. + loc("If you kill a hog with the weapon that he uses your hp will be 100").."|".. + loc("If you kill a hog with another weapon you'll get 35% of the damaged dealt").."|".. + loc("Every time you kill an enemy hog your ammo will get reseted").."|".. + loc("Rope won't get reseted") +-- hogs +local hero = { + name = loc("Hog Solo"), + x = 850, + y = 460, + mortarAmmo = 2, + firepunchAmmo = 1, + deagleAmmo = 4, + bazookaAmmo = 2, + grenadeAmmo = 4, +} +local enemies = { + { name = loc("Mortar"), x = 1890, y = 520, weapon = amMortar, additionalWeapons = {}}, + { name = loc("Desert Eagle"), x = 1390, y = 790, weapon = amDEagle, additionalWeapons = {}}, + { name = loc("Grenade"), x = 186, y = 48, weapon = amGrenade, additionalWeapons = {}}, + { name = loc("Shyryuken"), x = 330, y = 270, weapon = amFirePunch, additionalWeapons = {}}, + { name = loc("Bazooka"), x = 1950, y = 150, weapon = amBazooka, additionalWeapons = {}}, +} +-- teams +local teamA = { + name = loc("Hog Solo"), + color = tonumber("38D61C",16) -- green +} +local teamB = { + name = loc("5 deadly hogs"), + color = tonumber("FF0000",16) -- red +} + +-------------- LuaAPI EVENT HANDLERS ------------------ + +function onGameInit() + Seed = 1 + TurnTime = 25000 + CaseFreq = 0 + MinesNum = 0 + MinesTime = 1 + Explosives = 0 + Map = "death02_map" + Theme = "Hell" + + -- Hog Solo + AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy") + hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1") + AnimSetGearPosition(hero.gear, hero.x, hero.y) + -- enemies + shuffleHogs(enemies) + AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy") + for i=1,table.getn(enemies) do + enemies[i].gear = AddHog(enemies[i].name, 1, 100, "war_desertgrenadier1") + AnimSetGearPosition(enemies[i].gear, enemies[i].x, enemies[i].y) + end + + initCheckpoint("death02") + + AnimInit() + --AnimationSetup() +end + +function onGameStart() + AnimWait(hero.gear, 3000) + FollowGear(hero.gear) + ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0) + + AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0) + AddEvent(onHeroWin, {hero.gear}, heroWin, {hero.gear}, 0) + + --hero ammo + AddAmmo(hero.gear, amSkip, 100) + AddAmmo(hero.gear, amRope, 2) + refreshHeroAmmo() + + SendHealthStatsOff() +end + +function onNewTurn() + if CurrentHedgehog ~= hero.gear then + enemyWeapons() + end +end + +function onGearDelete(gear) + if isHog(gear) then + SetHealth(hero.gear, 100) + local deadHog = getHog(gear) + if deadHog.weapon == amDynamite then + hero.dynamiteAmmo = 0 + elseif deadHog.weapon == amFirePunch then + hero.firepunchAmmo = 0 + elseif deadHog.weapon == amDEagle then + hero.deagleAmmo = 0 + elseif deadHog.weapon == amBazooka then + hero.bazookaAmmo = 0 + elseif deadHog.weapon == amGrenade then + hero.grenadeAmmo = 0 + end + local randomHog = math.random(1,table.getn(enemies)) + while not GetHealth(enemies[randomHog].gear) do + randomHog = math.random(1,table.getn(enemies)) + end + table.insert(enemies[randomHog].additionalWeapons, deadHog.weapon) + for i=1,table.getn(deadHog.additionalWeapons) do + table.insert(enemies[randomHog].additionalWeapons, deadHog.additionalWeapons[i]) + end + refreshHeroAmmo() + end +end + +function onGearDamage(gear, damage) + if isHog(gear) and GetHealth(hero.gear) then + SetHealth(hero.gear, GetHealth(hero.gear) + damage/3) + end +end + +function onGameTick() + AnimUnWait() + if ShowAnimation() == false then + return + end + ExecuteAfterAnimations() + CheckEvents() +end + +function onPrecise() + if GameTime > 3000 then + SetAnimSkip(true) + end +end + +-------------- EVENTS ------------------ + +function onHeroDeath(gear) + if not GetHealth(hero.gear) then + return true + end + return false +end + +function onHeroWin(gear) + local allDead = true + for i=1,table.getn(enemies) do + if GetHealth(enemies[i].gear) then + allDead = false + break + end + end + return allDead +end + +-------------- ACTIONS ------------------ + +function heroDeath(gear) + SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1 + SendStat('siCustomAchievement', loc("You have to eliminate all the enemies")) --11 + SendStat('siCustomAchievement', loc("Read the Challenge Objectives from within the mission for more details")) --11 + SendStat('siPlayerKills','1',teamB.name) + SendStat('siPlayerKills','0',teamA.name) + EndGame() +end + +function heroWin(gear) + SendStat('siGameResult', loc("Congratulations, you won!")) --1 + SendStat('siCustomAchievement', loc("You complete the mission in "..TotalRounds.." rounds")) --11 + -- TODO SendStat('siCustomAchievement', loc("You have gained some extra life")) --11 + SendStat('siPlayerKills','1',teamA.name) + EndGame() +end + +------------ Other Functions ------------------- + +function shuffleHogs(hogs) + local hogsNumber = table.getn(hogs) + for i=1,hogsNumber do + local randomHog = math.random(hogsNumber) + hogs[i], hogs[randomHog] = hogs[randomHog], hogs[i] + end +end + +function refreshHeroAmmo() + local extraAmmo = 0 + if getAliveEnemiesCount() == 1 then + extraAmmo = 2 + end + AddAmmo(hero.gear, amMortar, hero.mortarAmmo + extraAmmo) + AddAmmo(hero.gear, amFirePunch, hero.firepunchAmmo + extraAmmo) + AddAmmo(hero.gear, amDEagle, hero.deagleAmmo + extraAmmo) + AddAmmo(hero.gear, amBazooka, hero.bazookaAmmo + extraAmmo) + AddAmmo(hero.gear, amGrenade, hero.grenadeAmmo + extraAmmo) +end + +function enemyWeapons() + for i=1,table.getn(enemies) do + if GetHealth(enemies[i].gear) and enemies[i].gear == CurrentHedgehog then + AddAmmo(enemies[i].gear, amMortar, 0) + AddAmmo(enemies[i].gear, amFirePunch, 0) + AddAmmo(enemies[i].gear, amDEagle, 0) + AddAmmo(enemies[i].gear, amBazooka, 0) + AddAmmo(enemies[i].gear, amGrenade, 0) + AddAmmo(enemies[i].gear, enemies[i].weapon, 1) + for w=1,table.getn(enemies[i].additionalWeapons) do + AddAmmo(enemies[i].gear, enemies[i].additionalWeapons[w], 1) + end + end + end +end + +function isHog(gear) + local hog = false + for i=1,table.getn(enemies) do + if gear == enemies[i].gear then + hog = true + break + end + end + return hog +end + +function getHog(gear) + for i=1,table.getn(enemies) do + if gear == enemies[i].gear then + return enemies[i] + end + end +end + +function getAliveEnemiesCount() + local count = 0 + for i=1,table.getn(enemies) do + if GetHealth(enemies[i].gear) then + count = count + 1 + end + end + return count +end diff -r 7daf157d8b52 -r 6af4ca27421a share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua Mon Sep 02 18:57:30 2013 +0300 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua Tue Sep 03 04:01:19 2013 +0300 @@ -34,24 +34,24 @@ y = 560 } local enemiesOdd = { - {name = "Hog 1", x = 2000 , y = 175}, - {name = "Hog III", x = 1950 , y = 1110}, - {name = "Hog 100", x = 1270 , y = 1480}, - {name = "Hog Saturn", x = 240 , y = 790}, - {name = "Hog nueve", x = 620 , y = 1950}, - {name = "Hog onze", x = 720 , y = 1950}, - {name = "Hog dertien", x = 1620 , y = 1950}, - {name = "Hog 3x5", x = 1720 , y = 1950}, + {name = loc("Hog 1"), x = 2000 , y = 175}, + {name = loc("Hog III"), x = 1950 , y = 1110}, + {name = loc("Hog 100"), x = 1270 , y = 1480}, + {name = loc("Hog Saturn"), x = 240 , y = 790}, + {name = loc("Hog nueve"), x = 620 , y = 1950}, + {name = loc("Hog onze"), x = 720 , y = 1950}, + {name = loc("Hog dertien"), x = 1620 , y = 1950}, + {name = loc("Hog 3x5"), x = 1720 , y = 1950}, } local enemiesEven = { - {name = "Hog two", x = 660, y = 140}, - {name = "Hog D", x = 1120, y = 1250}, - {name = "Hog exi", x = 1290, y = 1250}, - {name = "Hog octo", x = 820, y = 1950}, - {name = "Hog decar", x = 920, y = 1950}, - {name = "Hog Hephaestus", x = 1820, y = 1950}, - {name = "Hog 7+7", x = 1920, y = 1950}, - {name = "Hog EOF", x = 1200, y = 560}, + {name = loc("Hog two"), x = 660, y = 140}, + {name = loc("Hog D"), x = 1120, y = 1250}, + {name = loc("Hog exi"), x = 1290, y = 1250}, + {name = loc("Hog octo"), x = 820, y = 1950}, + {name = loc("Hog decar"), x = 920, y = 1950}, + {name = loc("Hog Hephaestus"), x = 1820, y = 1950}, + {name = loc("Hog 7+7"), x = 1920, y = 1950}, + {name = loc("Hog EOF"), x = 1200, y = 560}, } -- teams local teamA = { @@ -201,7 +201,6 @@ -------------- ACTIONS ------------------ --- game ends anyway but I want to sent custom stats probably... function heroDeath(gear) SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1 SendStat('siCustomAchievement', loc("You have to eliminate all the enemies")) --11