--- a/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua Fri Feb 23 22:43:34 2018 +0100
+++ b/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua Sat Feb 24 14:59:35 2018 +0100
@@ -51,6 +51,9 @@
-- Position for delayed targets
local delayedTargetTargetX, delayedTargetY
+-- Team name of the player's team
+local playerTeamName = loc("Sniperz")
+
-- This is a custom function to make it easier to
-- spawn more targets with just one line of code
-- You may define as many custom functions as you
@@ -68,6 +71,12 @@
function spawnTargetDelayed(x, y)
delayedTargetX = x
delayedTargetY = y
+ -- The previous target always counts double after destruction
+ score_bonus = score_bonus + 1
+end
+
+function getTargetScore()
+ return score_bonus * 200
end
-- Cut sequence to blow up land with dynamite
@@ -124,7 +133,7 @@
HealthDecrease = 0
-- Create the player team
- AddTeam(loc("Sniperz"), 14483456, "Simple", "Island", "Default", "cm_crosshair")
+ AddTeam(playerTeamName, 0xFF0204, "Simple", "Island", "Default", "cm_crosshair")
-- And add a hog to it
player = AddHog(loc("Hunter"), 0, 1, "Sniper")
SetGearPosition(player, 602, 1465)
@@ -146,6 +155,9 @@
-- A positive icon paramter (n) represents the (n+1)-th mission icon
-- A timeframe of 0 is replaced with the default time to show.
ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."), -amSniperRifle, 0)
+
+ -- Displayed initial player score
+ SetTeamLabel(playerTeamName, "0")
end
-- This function is called every game tick.
@@ -245,8 +257,6 @@
cinematic = false
SetCinematicMode(false)
end
- -- Add bonus score for the previuos target
- score_bonus = score_bonus + 1
-- Now *actually* spawn the delayed target
spawnTarget(delayedTargetX, delayedTargetY)
end
@@ -390,6 +400,7 @@
time_goal = TurnTimeLeft
end
end
+ SetTeamLabel(playerTeamName, getTargetScore())
end
end
@@ -400,12 +411,13 @@
if shots > 0 then
accuracy = (score/shots)*100
end
- local end_score_targets = (score_bonus * 200)
+ local end_score_targets = getTargetScore()
local end_score_overall
if not game_lost then
local end_score_time = math.ceil(time_goal/5)
local end_score_accuracy = math.ceil(accuracy * 100)
end_score_overall = end_score_time + end_score_targets + end_score_accuracy
+ SetTeamLabel(playerTeamName, tostring(end_score_overall))
SendStat(siGameResult, loc("You have successfully finished the sniper rifle training!"))
SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets))
@@ -420,6 +432,6 @@
end_score_overall = end_score_targets
end
SendStat(siPointType, loc("points"))
- SendStat(siPlayerKills, tostring(end_score_overall), loc("Sniperz"))
+ SendStat(siPlayerKills, tostring(end_score_overall), playerTeamName)
end
--- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Fri Feb 23 22:43:34 2018 +0100
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Sat Feb 24 14:59:35 2018 +0100
@@ -53,6 +53,7 @@
loc("Compete to use as few planes as possible!") .. "|" ..
"", -amRCPlane, 4000
)
+ SetTeamLabel(loc("Wannabe Flyboys"), "0")
PlaceGirder(2192, 508, 6)
PlaceGirder(2192, 670, 6)
@@ -332,6 +333,7 @@
if GetGearType(gear) == gtRCPlane then
RCGear = gear
planesUsed = planesUsed + 1
+ SetTeamLabel(loc("Wannabe Flyboys"), tostring(planesUsed))
planeTimer = 0
missiles = 0
end
@@ -352,7 +354,6 @@
RCGear = nil
planeUhOh = false
missiles = 0
- AddCaption(string.format(loc("Planes used: %d"), planesUsed))
if(planeTimer < 2000 and crateStreak == 0) then
nextComment = sndStupid
--- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.lua Fri Feb 23 22:43:34 2018 +0100
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.lua Sat Feb 24 14:59:35 2018 +0100
@@ -70,18 +70,24 @@
}
+local playerTeamName = loc("Wannabe Shoppsta")
+
function GenericEnd()
EndGame()
end
+function GetKillScore()
+ return math.ceil((hogsKilled / 16)*6000)
+end
+
function GameOverMan()
missionWon = false
ShowMission(loc("Rope-knocking Challenge"), loc("Challenge over!"), loc("Oh no! Just try again!"), -amSkip, 0)
SendStat(siGameResult, loc("Challenge over!"))
- local score = math.ceil((hogsKilled / 16)*6000)
+ local score = GetKillScore()
SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, score))
SendStat(siPointType, loc("points"))
- SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta"))
+ SendStat(siPlayerKills, tostring(score), playerTeamName)
PlaySound(sndHellish)
end
@@ -91,13 +97,14 @@
ShowMission(loc("Rope-knocking Challenge"), loc("Challenge completed!"), loc("Congratulations!") .. "|" .. string.format(loc("Completion time: %.2fs"), completeTime), 0, 0)
PlaySound(sndHomerun)
SendStat(siGameResult, loc("Challenge completed!"))
- local hogScore = math.ceil((hogsKilled / 16)*6000)
+ local hogScore = GetKillScore()
local timeScore = math.ceil((finishTime/TurnTime)*6000)
local score = hogScore + timeScore
SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, hogScore))
SendStat(siCustomAchievement, string.format(loc("You have completed this challenge in %.2f s (+%d points)."), completeTime, timeScore))
SendStat(siPointType, loc("points"))
- SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta"))
+ SendStat(siPlayerKills, tostring(score), playerTeamName)
+ SetTeamLabel(playerTeamName, tostring(score))
end
function AssignCharacter(p)
@@ -144,7 +151,7 @@
MinesNum = 0
Explosives = 0
- AddTeam(loc("Wannabe Shoppsta"), 0x11F12B, "money", "Island", "Default", "cm_shoppa")
+ AddTeam(playerTeamName, 0x11F12B, "money", "Island", "Default", "cm_shoppa")
hhs[0] = AddHog(loc("Ace"), 0, 1, "Gasmask")
SetGearPosition(player, 1380, 1500)
@@ -171,6 +178,7 @@
loc("Use the rope to knock your enemies to their doom.") .. "|" ..
loc("Finish this challenge as fast as possible to earn bonus points."),
-amRope, 4000)
+ SetTeamLabel(playerTeamName, "0")
PlaceGirder(46,1783, 0)
@@ -235,6 +243,8 @@
AddCaption(string.format(knockTaunt(), GetHogName(gear)), 0xFFFFFFFF, capgrpMessage)
hogsKilled = hogsKilled +1
+ SetTeamLabel(playerTeamName, tostring(GetKillScore()))
+
if hogsKilled == 15 then
PlaySound(sndRideOfTheValkyries)
elseif hogsKilled == 16 then
--- a/share/hedgewars/Data/Scripts/SpeedShoppa.lua Fri Feb 23 22:43:34 2018 +0100
+++ b/share/hedgewars/Data/Scripts/SpeedShoppa.lua Sat Feb 24 14:59:35 2018 +0100
@@ -117,6 +117,8 @@
_G.onGameStart = function()
SendHealthStatsOff()
ShowMission(params.missionTitle, loc("Challenge"), params.goalText, -amRope, 5000)
+ -- <crates collected>/<total number of crates>
+ SetTeamLabel(params.teamName, string.format(loc("%d/%d"), cratesCollected, #crates))
for i=1,#crates do
spawnCrate(crates[i].x, crates[i].y)
end
@@ -130,6 +132,8 @@
_G.onGearDelete = function(gear)
if GetGearType(gear) == gtCase and not hogHurt and not timeOut then
cratesCollected = cratesCollected + 1
+ -- <crates collected>/<total number of crates>
+ SetTeamLabel(params.teamName, string.format(loc("%d/%d"), cratesCollected, #crates))
PlaySound(sndShotgunReload)
if cratesCollected == #crates then
endTime = TurnTimeLeft
--- a/share/hedgewars/Data/Scripts/TargetPractice.lua Fri Feb 23 22:43:34 2018 +0100
+++ b/share/hedgewars/Data/Scripts/TargetPractice.lua Sat Feb 24 14:59:35 2018 +0100
@@ -103,6 +103,12 @@
- shootText: A string which says how many times the player shot, ā%dā is replaced
by the number of shots. (default: "You have shot %d times.")
]]
+
+
+local getTargetsScore = function()
+ return scored * math.ceil(6000/#targets)
+end
+
function TargetPracticeMission(params)
if params.hogHat == nil then params.hogHat = "NoHat" end
if params.hogName == nil then params.hogName = loc("Trainee") end
@@ -151,6 +157,7 @@
_G.onGameStart = function()
SendHealthStatsOff()
ShowMission(params.missionTitle, loc("Aiming practice"), params.goalText, -params.ammoType, 5000)
+ SetTeamLabel(params.teamName, "0")
spawnTarget()
end
@@ -205,6 +212,7 @@
_G.onGearDamage = function(gear, damage)
if GetGearType(gear) == gtTarget then
scored = scored + 1
+ SetTeamLabel(params.teamName, tostring(getTargetsScore()))
if scored < total_targets then
AddCaption(string.format(loc("Targets left: %d"), (total_targets-scored)), 0xFFFFFFFF, capgrpMessage)
spawnTarget()
@@ -249,12 +257,13 @@
_G.generateStats = function()
local accuracy = (scored/shots)*100
- local end_score_targets = scored * math.ceil(6000/#targets)
+ local end_score_targets = getTargetsScore()
local end_score_overall
if not game_lost then
local end_score_time = math.ceil(time_goal/(params.time/6000))
local end_score_accuracy = math.ceil(accuracy * 60)
end_score_overall = end_score_time + end_score_targets + end_score_accuracy
+ SetTeamLabel(params.teamName, tostring(end_score_overall))
SendStat(siGameResult, loc("You have finished the target practice!"))