# HG changeset patch # User Wuzzy # Date 1531838734 -7200 # Node ID cbda0f842364fa182ed7c8b6ad76c0f6cbb934e8 # Parent b5f8864a38d33ca78179f17a1f5b31b3f39a5352 Standardize hidden mission achievement in new Lua library "Achievements" diff -r b5f8864a38d3 -r cbda0f842364 ChangeLog.txt --- a/ChangeLog.txt Tue Jul 17 14:20:58 2018 +0200 +++ b/ChangeLog.txt Tue Jul 17 16:45:34 2018 +0200 @@ -55,6 +55,7 @@ + New call: GetAmmo(ammoType): Returns ammo configuration (corresponds to SetAmmo) + New parameter: SetAmmoTexts: 5th param. showExtra: Set to false to hide texts like “Not yet available” + New parameter: ShowMission: 6th param. forceDisplay: Set to true to prevent this particular mission panel to be hidden manually by player + + New Lua library: Achievements * Changed global: lfCurrentHog becomes lfCurHogCrate * Fixed variable: TotalRounds was -1 (instead of 0) in first real round after hog placement phase * AI sometimes intentionally shot hedgehogs with aihDoesntMatter set diff -r b5f8864a38d3 -r cbda0f842364 share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua --- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Tue Jul 17 14:20:58 2018 +0200 +++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Tue Jul 17 16:45:34 2018 +0200 @@ -1,4 +1,5 @@ HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Achievements.lua") local player = nil local RCGear = nil @@ -424,7 +425,7 @@ end if(planesUsed == 1) then SendStat(siCustomAchievement, loc("Congratulations! You have truly mastered this challenge! Don't forget to save the demo.")) - SendStat(siCustomAchievement, string.format(loc("Achievement gotten: %s"), loc("Prestigious Pilot"))) + awardAchievement(loc("Prestigious Pilot"), nil, false) end ShowMission ( diff -r b5f8864a38d3 -r cbda0f842364 share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua --- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua Tue Jul 17 14:20:58 2018 +0200 +++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua Tue Jul 17 16:45:34 2018 +0200 @@ -1,6 +1,7 @@ HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Achievements.lua") local player local hh = {} @@ -241,8 +242,7 @@ SendStat(siCustomAchievement, string.format(loc("You saved %d of 8 Hapless Hogs."), hhLeft)) if hhLeft == 8 then - AddCaption(string.format(loc("Achievement gotten: %s"), loc("Lively Lifeguard")) ,0xffba00ff,capgrpMessage2) - SendStat(siCustomAchievement, loc("You have obtained an achievement: Lively Lifeguard")) + awardAchievement(loc("Lively Lifeguard")) end EndGame() diff -r b5f8864a38d3 -r cbda0f842364 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Bamboo_Thicket.lua --- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Bamboo_Thicket.lua Tue Jul 17 14:20:58 2018 +0200 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Bamboo_Thicket.lua Tue Jul 17 16:45:34 2018 +0200 @@ -1,5 +1,6 @@ HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Achievements.lua") local player = nil local enemy = nil @@ -81,9 +82,7 @@ ShowMission(loc("Bamboo Thicket"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) if (turnNumber < 6) and (firedShell == false) then - local achievementString = string.format(loc("Achievement gotten: %s"), loc("Energetic Engineer")) - AddCaption(achievementString, 0xffba00ff, capgrpMessage2) - SendStat(siCustomAchievement, achievementString) + awardAchievement(loc("Energetic Engineer")) end elseif gear == player then diff -r b5f8864a38d3 -r cbda0f842364 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua --- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua Tue Jul 17 14:20:58 2018 +0200 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua Tue Jul 17 16:45:34 2018 +0200 @@ -1,5 +1,6 @@ HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Achievements.lua") local player = nil -- This variable will point to the hog's gear local instructor = nil @@ -136,9 +137,7 @@ elseif (gear == instructor) and (GetY(gear) > WaterLine) then HogSay(player, loc("See ya!"), SAY_THINK) TurnTimeLeft = 3000 - local achievementString = string.format(loc("Achievement gotten: %s"), loc("Naughty Ninja")) - AddCaption(achievementString, 0xffba00ff, capgrpMessage2) - SendStat(siCustomAchievement, achievementString) + awardAchievement(loc("Naughty Ninja")) DismissTeam(loc("Blue Team")) gameWon = true elseif gear == enemy then diff -r b5f8864a38d3 -r cbda0f842364 share/hedgewars/Data/Scripts/Achievements.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Achievements.lua Tue Jul 17 16:45:34 2018 +0200 @@ -0,0 +1,15 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") + +function awardAchievement(name, statMessage, capgrp) + local achievementString = string.format(loc("Achievement gotten: %s"), name) + if capgrp == nil then + captionType = capgrpMessage2 + end + if capgrp ~= false then + AddCaption(achievementString, 0xFFBA00FF, capgrpMessage2) + end + if not statMessage then + statMessage = achievementString + end + SendStat(siCustomAchievement, statMessage) +end