--- a/ChangeLog.txt Wed Dec 19 20:34:07 2018 +0100
+++ b/ChangeLog.txt Wed Dec 19 20:56:10 2018 +0100
@@ -28,6 +28,7 @@
+ New return value: AddTeam and AddMissionTeam return team index of new team
+ Utils library: New calls: getReadableChallengeRecord, updateChallengeRecord
+ New callback: onGameResult(winningClan): Called when the game ends normally. winningClan = index of winning clan or -1 on draw
+ + SpeedShoppa/TargetPractice libraries: Remove custom hog and team info settings
+ Params explode, poison in the SpawnFake*Crate functions now optional and default to false
====================== 0.9.25 ======================
--- a/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua Wed Dec 19 20:56:10 2018 +0100
@@ -53,7 +53,7 @@
local delayedTargetTargetX, delayedTargetY
-- Team name of the player's team
-local playerTeamName = loc("Sniperz")
+local playerTeamName
-- This is a custom function to make it easier to
-- spawn more targets with just one line of code
@@ -133,9 +133,10 @@
HealthDecrease = 0
-- Create the player team
- AddTeam(playerTeamName, -1, "Simple", "Island", "Default", "cm_crosshair")
+ AddMissionTeam(-1)
+ playerTeamName = GetTeamName(0)
-- And add a hog to it
- player = AddHog(loc("Hunter"), 0, 1, "Sniper")
+ player = AddMissionHog(1)
SetGearPosition(player, 602, 1465)
end
--- a/share/hedgewars/Data/Missions/Challenge/ClimbHome.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Challenge/ClimbHome.lua Wed Dec 19 20:56:10 2018 +0100
@@ -23,8 +23,8 @@
Explosives = 0
MineDudPercent = 0
Map = "ClimbHome"
- AddTeam(loc("Lonely Hog"), -1, "bubble", "Island", "Default")
- player = AddHog(loc("Climber"), 0, 1, "NoHat")
+ AddMissionTeam(-1)
+ player = AddMissionHog(1)
if showWaterStats then
dummyHog = AddHog(" ", 0, 1, "NoHat")
HH[dummyHog] = nil
--- a/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Wed Dec 19 20:56:10 2018 +0100
@@ -35,8 +35,8 @@
MinesNum = 0
Explosives = 0
- AddTeam(loc("Wannabe Flyboys"), -1, "Simple", "Island", "Default", "cm_scout")
- player = AddHog(loc("Ace"), 0, 80, "Gasmask")
+ AddMissionTeam(-1)
+ player = AddMissionHog(80)
SetGearPosition(player, 1380, 1500)
end
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Wed Dec 19 20:56:10 2018 +0100
@@ -47,8 +47,8 @@
------ TEAM LIST ------
- AddTeam(loc("Bazooka Team"), -1, "Flower", "Earth", "Default", "hedgewars")
- hog = AddHog(loc("Greenhorn"), 0, 100, "NoHat")
+ AddMissionTeam(-1)
+ hog = AddMissionHog(100)
SetGearPosition(hog, 1485, 2001)
SetEffect(hog, heResurrectable, 1)
@@ -228,7 +228,7 @@
end
SendStat(siCustomAchievement, loc("Good job!"))
SendStat(siGameResult, loc("You have completed the Basic Bazooka Training!"))
- SendStat(siPlayerKills, "0", loc("Bazooka Team"))
+ SendStat(siPlayerKills, "0", GetHogTeamName(hog))
EndGame()
gameOver = true
end
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua Wed Dec 19 20:56:10 2018 +0100
@@ -209,7 +209,7 @@
SendStat(siGameResult, loc("You have finished the Flying Saucer Training!"))
SendStat(siCustomAchievement, loc("Good job!"))
- SendStat(siPlayerKills, "0", loc("Hogonauts"))
+ SendStat(siPlayerKills, "0", GetHogTeamName(Player))
EndTurn(true)
EndGame()
@@ -397,11 +397,9 @@
WaterRise = 0
HealthDecrease = 0
- -- Team name is a pun on “hedgehog” and “astronauts”
- AddTeam( loc( "Hogonauts" ), -9, "earth", "Earth", "Default", "cm_galaxy" )
+ AddMissionTeam(-9)
- -- Hedgehog name is a pun on “Neil Armstrong”
- Player = AddHog( loc( "Neil Hogstrong" ), 0, 1, "NoHat" )
+ Player = AddMissionHog(1)
SetGearPosition( Player, StartPos.X, StartPos.Y)
SetEffect( Player, heResurrectable, 1 )
end
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua Wed Dec 19 20:56:10 2018 +0100
@@ -39,8 +39,8 @@
------ TEAM LIST ------
- AddTeam(loc("Grenade Team"), -1, "Flower", "Earth", "Default", "cm_grenade")
- hog = AddHog(loc("Greenhorn"), 0, 1, "NoHat")
+ AddMissionTeam(-1)
+ hog = AddMissionHog(1)
SetGearPosition(hog, 570, 157)
SetEffect(hog, heResurrectable, 1)
@@ -203,7 +203,7 @@
end
SendStat(siCustomAchievement, loc("Good job!"))
SendStat(siGameResult, loc("You have completed the Basic Grenade Training!"))
- SendStat(siPlayerKills, "0", loc("Grenade Team"))
+ SendStat(siPlayerKills, "0", GetHogTeamName(hog))
EndGame()
gameOver = true
end
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Movement.lua Wed Dec 19 20:56:10 2018 +0100
@@ -115,18 +115,18 @@
drawMap()
------ HOG LIST ------
- AddTeam(loc("Training Team"), -1, "deadhog", "SteelTower", "Default", "hedgewars")
+ AddMissionTeam(-1)
- hhs[1] = AddHog(loc("Greenhorn"), 0, 100, "NoHat")
+ hhs[1] = AddMissionHog(100)
SetGearPosition(hhs[1], 404, 1714)
SetEffect(hhs[1], heResurrectable, 1)
- hhs[2] = AddHog(loc("Rhombus"), 0, 100, "NoHat")
+ hhs[2] = AddMissionHog(100)
SetGearPosition(hhs[2], 620, 1538)
SetEffect(hhs[2], heResurrectable, 1)
HogTurnLeft(hhs[2], true)
- hhs[3] = AddHog(loc("Trapped"), 0, 100, "NoHat")
+ hhs[3] = AddMissionHog(100)
SetGearPosition(hhs[3], 1573, 1824)
SetEffect(hhs[3], heResurrectable, 1)
@@ -135,12 +135,23 @@
SetEffect(hhs[4], heResurrectable, 1)
HogTurnLeft(hhs[4], true)
- hhs[5] = AddHog(loc("Ice"), 0, 100, "NoHat")
+ hhs[5] = AddMissionHog(100)
SetGearPosition(hhs[5], 1813, 1285)
SetEffect(hhs[5], heResurrectable, 1)
hog_greenhorn = hhs[1]
hog_cappy = hhs[4]
+
+ for i=1,#hhs do
+ if hhs[i] ~= hog_cappy then
+ if GetHogName(hhs[i]) == loc("Cappy") then
+ SetHogName(hhs[i], loc("Greenhorn"))
+ end
+ if GetHogHat(hhs[i]) == "cap_red" then
+ SetHogHat(hhs[i], "NoHat")
+ end
+ end
+ end
SendHealthStatsOff()
end
@@ -254,7 +265,7 @@
SendStat(siGameResult, loc("You have completed the Basic Movement Training!"))
SendStat(siCustomAchievement, loc("Congratulations!"))
SendStat(siCustomAchievement, loc("Return to the training menu by pressing the “Go back” button."))
- SendStat(siPlayerKills, "0", loc("Training Team"))
+ SendStat(siPlayerKills, "0", GetHogTeamName(hog_greenhorn))
PlaySound(sndVictory, CurrentHedgehog)
-- Disable controls, end game
SetInputMask(0)
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua Wed Dec 19 20:56:10 2018 +0100
@@ -96,8 +96,8 @@
WaterRise = 0
HealthDecrease = 0
- AddTeam(teamName, -1, "Plinko", "Snail", "Default", "cm_yinyang")
- hog = AddHog(loc("Roper"), 0, initHogHealth, "StrawHat")
+ AddMissionTeam(-1)
+ hog = AddMissionHog(initHogHealth)
SetGearPosition(hog, cpX, cpY)
SetEffect(hog, heResurrectable, 1)
--- a/share/hedgewars/Data/Scripts/SpeedShoppa.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Scripts/SpeedShoppa.lua Wed Dec 19 20:56:10 2018 +0100
@@ -45,11 +45,6 @@
optional fields:
- missionTitle: the name of the mission (optional but highly recommended) (default: "Speed Shoppa")
- - hogHat: hat of the hedgehog (default: "NoHat")
- - hogName: name of the hedgehog (default: "Roper")
- - teamName: name of the hedgehog’s team (default: "Shoppers")
- - teamGrave: name of the hedgehog’s grave (default: "Statue")
- - teamFlag: name of the team’s flag (default: "cm_shoppa")
- clanColor: color of the (only) clan (default: -1, default first clan color)
- goalText: A short string explaining the goal of the mission
(default: "Use your rope to collect all crates as fast as possible.")
@@ -74,14 +69,9 @@
local crates
function SpeedShoppaMission(params)
- if params.hogHat == nil then params.hogHat = "NoHat" end
- if params.hogName == nil then params.hogName = loc("Roper") end
- if params.teamName == nil then params.teamName = loc("Shoppers") end
if params.goalText == nil then params.goalText = loc("Use your rope to collect all crates as fast as possible.") end
if params.missionTitle == nil then params.missionTitle = loc("Speed Shoppa") end
if params.clanColor == nil then params.clanColor = -1 end
- if params.teamGrave == nil then params.teamGrave = "Statue" end
- if params.teamFlag == nil then params.teamFlag = "cm_shoppa" end
if params.extra_onGameInit == nil then params.extra_onGameInit = function() end end
if params.extra_onGameStart == nil then params.extra_onGameStart = function() end end
if params.faceLeft == nil then params.faceLeft = false end
@@ -101,8 +91,8 @@
WaterRise = 0
HealthDecrease = 0
- AddTeam(params.teamName, params.clanColor, params.teamGrave, "Castle", "Default", params.teamFlag)
- playerHog = AddHog(params.hogName, 0, 1, params.hogHat)
+ AddMissionTeam(params.clanColor)
+ playerHog = AddMissionHog(1)
HogTurnLeft(playerHog, params.faceLeft)
SetGearPosition(playerHog, params.hog_x, params.hog_y)
@@ -119,7 +109,7 @@
local append = getReadableChallengeRecord("TimeRecord")
ShowMission(params.missionTitle, loc("Challenge"), params.goalText .. "|" .. append, -amRope, 5000)
-- <crates collected>/<total number of crates>
- SetTeamLabel(params.teamName, string.format(loc("%d/%d"), cratesCollected, #crates))
+ SetTeamLabel(GetHogTeamName(playerHog), string.format(loc("%d/%d"), cratesCollected, #crates))
for i=1,#crates do
spawnCrate(crates[i].x, crates[i].y)
end
@@ -134,7 +124,7 @@
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))
+ SetTeamLabel(GetHogTeamName(playerHog), string.format(loc("%d/%d"), cratesCollected, #crates))
PlaySound(sndShotgunReload)
if cratesCollected == #crates then
endTime = TurnTimeLeft
@@ -175,14 +165,14 @@
SendStat(siGameResult, loc("Challenge completed!"))
SendStat(siPointType, loc("milliseconds"))
local time = startTime - endTime
- SendStat(siPlayerKills, tostring(time), params.teamName)
+ SendStat(siPlayerKills, tostring(time), GetHogTeamName(playerHog))
SendStat(siCustomAchievement, string.format(loc("You have finished the challenge in %.3f s."), (time/1000)))
SetTurnTimeLeft(0)
updateChallengeRecord("TimeRecord", time)
else
SendStat(siGameResult, loc("Challenge failed!"))
SendStat(siPointType, loc("crate(s)"))
- SendStat(siPlayerKills, tostring(cratesCollected), params.teamName)
+ SendStat(siPlayerKills, tostring(cratesCollected), GetHogTeamName(playerHog))
SendStat(siCustomAchievement, string.format(loc("You have collected %d out of %d crate(s)."), cratesCollected, #crates))
end
gameEnded = true
--- a/share/hedgewars/Data/Scripts/TargetPractice.lua Wed Dec 19 20:34:07 2018 +0100
+++ b/share/hedgewars/Data/Scripts/TargetPractice.lua Wed Dec 19 20:56:10 2018 +0100
@@ -43,10 +43,6 @@
wind = ,
solidLand = ,
artillery = ,
- hogHat = ,
- hogName = ,
- teamName = ,
- teamGrave = ,
clanColor = ,
goalText = ,
shootText =
@@ -96,11 +92,6 @@
- wind: the initial wind (-100 to 100) (default: 0 (no wind))
- solidLand: weather the terrain is indestructible (default: false)
- artillery: if true, the hog can’t move (default: false)
- - hogHat: hat of the hedgehog (default: "NoHat")
- - hogName: name of the hedgehog (default: "Trainee")
- - teamName: name of the hedgehog’s team (default: "Training Team")
- - teamGrave: name of the hedgehog’s grave
- - teamFlag: name of the team’s flag (default: "cm_crosshair")
- secGearType: cluster of projectile gear (if present) (used to re-center camera)
- clanColor: color of the (only) clan (default: -1, default first clan color)
- goalText: A short string explaining the goal of the mission
@@ -115,14 +106,9 @@
end
function TargetPracticeMission(params)
- if params.hogHat == nil then params.hogHat = "NoHat" end
- if params.hogName == nil then params.hogName = loc("Trainee") end
- if params.teamName == nil then params.teamName = loc("Training Team") end
if params.goalText == nil then params.goalText = loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission.") end
if params.shootText == nil then params.shootText = loc("You have shot %d times.") end
if params.clanColor == nil then params.clanColor = -1 end
- if params.teamGrave == nil then params.teamGrave= "Statue" end
- if params.teamFlag == nil then params.teamFlag = "cm_crosshair" end
if params.wind == nil then params.wind = 0 end
local solid, artillery
@@ -160,9 +146,9 @@
SetWind(params.wind)
- AddTeam(loc(params.teamName), params.clanColor, params.teamGrave, "Flowerhog", "Default", params.teamFlag)
+ AddMissionTeam(params.clanColor)
- player = AddHog(loc(params.hogName), 0, 1, params.hogHat)
+ player = AddMissionHog(1)
SetGearPosition(player, params.hog_x, params.hog_y)
end
@@ -170,7 +156,7 @@
SendHealthStatsOff()
local recordInfo = getReadableChallengeRecord("Highscore")
ShowMission(params.missionTitle, loc("Aiming practice"), params.goalText .. "|" .. recordInfo, -params.ammoType, 5000)
- SetTeamLabel(params.teamName, "0")
+ SetTeamLabel(GetHogTeamName(player), "0")
spawnTarget()
end
@@ -240,7 +226,7 @@
_G.onGearDamage = function(gear, damage)
if GetGearType(gear) == gtTarget then
scored = scored + 1
- SetTeamLabel(params.teamName, tostring(getTargetsScore()))
+ SetTeamLabel(GetHogTeamName(player), tostring(getTargetsScore()))
if scored < total_targets then
AddCaption(string.format(loc("Targets left: %d"), (total_targets-scored)), capcolDefault, capgrpMessage)
spawnTarget()
@@ -299,7 +285,7 @@
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))
+ SetTeamLabel(GetHogTeamName(player), tostring(end_score_overall))
SendStat(siGameResult, loc("You have finished the target practice!"))
@@ -318,7 +304,7 @@
end_score_overall = end_score_targets
end
SendStat(siPointType, loc("point(s)"))
- SendStat(siPlayerKills, tostring(end_score_overall), loc(params.teamName))
+ SendStat(siPlayerKills, tostring(end_score_overall), GetHogTeamName(player))
-- Update highscore
updateChallengeRecord("Highscore", end_score_overall)
end