--- 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
--- 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 (
--- 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()
--- 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
--- 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
--- /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