# HG changeset patch # User Wuzzy # Date 1538255582 -7200 # Node ID 373813316812e598104d94b339aebbcda2e3f6b4 # Parent bf8c454a9f932b07b5f8f34bc3868a4d182be61a ASA, desert02: Add achievement for escaping with all crates collected and no damage taken diff -r bf8c454a9f93 -r 373813316812 share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert02.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert02.lua Sat Sep 29 22:20:19 2018 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert02.lua Sat Sep 29 23:13:02 2018 +0200 @@ -5,6 +5,7 @@ HedgewarsScriptLoad("/Scripts/Locale.lua") HedgewarsScriptLoad("/Scripts/Animate.lua") +HedgewarsScriptLoad("/Scripts/Achievements.lua") HedgewarsScriptLoad("/Missions/Campaign/A_Space_Adventure/global_functions.lua") ----------------- VARIABLES -------------------- @@ -17,6 +18,10 @@ local goals = { [dialog01] = {missionName, loc("Getting ready"), loc("Use the rope to quickly get to the surface!") .. "|" .. loc("Mines time: 1 second"), 1, 4500}, } +-- For an achievement/award (see below) +local cratesCollected = 0 +local totalCrates = 0 +local damageTaken = false -- health crates healthX = 565 health1Y = 1400 @@ -121,12 +126,25 @@ function onGearAdd(gear) if GetGearType(gear) == gtRope then HideMission() + elseif GetGearType(gear) == gtCase then + totalCrates = totalCrates + 1 end end function onGearDelete(gear) if gear == hero.gear then hero.dead = true + damageTaken = true + end + -- Crate collected + if GetGearType(gear) == gtCase and band(GetGearMessage(gear), gmDestroy) ~= 0 then + cratesCollected = cratesCollected + 1 + end +end + +function onGearDamage(gear) + if gear == hero.gear then + damageTaken = true end end @@ -177,6 +195,10 @@ SendStat(siCustomAchievement, loc("This is a new personal best, congratulations!")) end end + -- Achievement awarded for escaping with all crates collected and no damage taken + if (not damageTaken) and (cratesCollected >= totalCrates) then + awardAchievement(loc("Better Safe Than Sorry")) + end sendSimpleTeamRankings({teamA.name}) SaveCampaignVar("Mission7Won", "true") checkAllMissionsCompleted()