# HG changeset patch # User Wuzzy # Date 1545326593 -3600 # Node ID 310b167141cc5502956ad6f00d3c3c62f5a3c4f9 # Parent d4aa64f51c9feb409a7b6e4f152aa01d55e1846a Use player's team identity for SimpleMission-based mission diff -r d4aa64f51c9f -r 310b167141cc ChangeLog.txt --- a/ChangeLog.txt Thu Dec 20 17:51:46 2018 +0100 +++ b/ChangeLog.txt Thu Dec 20 18:23:13 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 + + SimpleMission: Add isMissionTeam attribute for teams + SpeedShoppa/TargetPractice libraries: Remove custom hog and team info settings + Params explode, poison in the SpawnFake*Crate functions now optional and default to false diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/Bazooka_Battlefield.lua --- a/share/hedgewars/Data/Missions/Scenario/Bazooka_Battlefield.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/Bazooka_Battlefield.lua Thu Dec 20 18:23:13 2018 +0100 @@ -14,24 +14,16 @@ [amBazooka] = { count = 9 }, }, teams = { - { name = loc("Pincer Knights"), - flag = "cm_swordshield", - grave = "Grave", + { isMissionTeam = true, hogs = { { - name = loc("Left Tong"), health = 100, x = 276, y = 825, - botLevel = 0, - hat = "knight", ammo = { [amSwitch] = 100 }, }, { - name = loc("Right Tong"), health = 100, x = 1794, y = 716, - botLevel = 0, - hat = "knight", faceLeft = true, }, }, }, diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/Big_Armory.lua --- a/share/hedgewars/Data/Missions/Scenario/Big_Armory.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/Big_Armory.lua Thu Dec 20 18:23:13 2018 +0100 @@ -28,16 +28,12 @@ * relevant GameFlag: gfDisableLandObjects ]] }, teams = { - { name = loc("Pro Killers"), + { isMissionTeam = true, clanID = 0, - flag = "cm_scout", - grave = "Bone", hogs = { { - name = loc("Ultrasoldier"), health = 100, x = 543, y = 1167, - hat = "Terminator_Glasses", ammo = heroAmmo, } }, }, diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/Tentacle_Terror.lua --- a/share/hedgewars/Data/Missions/Scenario/Tentacle_Terror.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/Tentacle_Terror.lua Thu Dec 20 18:23:13 2018 +0100 @@ -16,16 +16,12 @@ }, wind = -50, teams = { - { name = loc("Hell Army"), - flag = "cm_hellish", - grave = "Simple_reversed", + { isMissionTeam = true, hogs = { { - name = loc("Lord Evil"), faceLeft = true, health = 30, x = 1210, y = 1446, - hat = "Evil", - botLevel = 0 } } + } } }, { name = loc("Heavenly Defense"), flag = "cm_fcw", diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.lua --- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.lua Thu Dec 20 18:23:13 2018 +0100 @@ -13,12 +13,10 @@ MapFeatureSize = 12, }, teams = { - { name = loc("Pathetic Resistance"), + { isMissionTeam = true, clanID = 0, - flag = "cm_yinyang", - grave = "Plinko", hogs = { - {name = loc("Ikeda"), health = 48, x = 397, y = 865, hat = "StrawHat"} + {health = 48, x = 397, y = 865} }, }, { name = loc("Cybernetic Empire"), diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/User_Mission_-_Nobody_Laugh.lua --- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Nobody_Laugh.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Nobody_Laugh.lua Thu Dec 20 18:23:13 2018 +0100 @@ -24,26 +24,17 @@ [amSwitch] = { count = 9 }, }, teams = { - { name = loc("Nameless Heroes"), - flag = "cm_crossedswords", - grave = "eyecross", - voice = "HillBilly", + { isMissionTeam = true, clanID = 0, hogs = { { - name = loc("Hunter"), health = 1, x = 1267, y = 451, - hat = "Skull", - botLevel = 0, ammo = { [amParachute] = 1, [amHammer] = 1 }, }, { - name = loc("Drowner"), health = 31, x = 1332, y = 451, - hat = "mp3", - botLevel = 0, ammo = { [amWhip] = 1 }, }, }}, diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/User_Mission_-_The_Great_Escape.lua --- a/share/hedgewars/Data/Missions/Scenario/User_Mission_-_The_Great_Escape.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_The_Great_Escape.lua Thu Dec 20 18:23:13 2018 +0100 @@ -19,10 +19,8 @@ [amFirePunch] = { ammoInCrate = 3 }, }, teams = { - { name = loc("Hero Team"), - flag = "cm_swordshield", - grave = "star", - hogs = {{ name = loc("Good Dude"), health = 1, x = 1050, y = 534 }}, + { isMissionTeam = true, + hogs = {{ health = 1, x = 1050, y = 534 }}, }, { name = loc("Bad Team"), flag = "cm_dragonrb", diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Missions/Scenario/portal.lua --- a/share/hedgewars/Data/Missions/Scenario/portal.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Missions/Scenario/portal.lua Thu Dec 20 18:23:13 2018 +0100 @@ -19,10 +19,10 @@ HealthDecrease = 0 WaterRise = 0 - AddMissionTeam(-9) + AddMissionTeam(-1) player = AddMissionHog(10) - AddTeam(loc("Hell Army"), -1, "skull", "Island", "Default", "cm_hellish") + AddTeam(loc("Hell Army"), -9, "skull", "Island", "Default", "cm_hellish") enemy1 = AddHog(loc("Lucifer"), 1, 200, "InfernalHorns") enemy2 = AddHog(loc("Voldemort"), 1, 150, "WizardHat") enemy3 = AddHog(loc("Zombi"), 1, 100, "Zombi") @@ -32,7 +32,7 @@ enemy7 = AddHog(loc("C-2"), 1, 50, "cyborg1") enemy8 = AddHog(loc("Rider"), 1, 50, "scif_SparkssHelmet") - AddTeam(loc("Badmad"), -1, "skull", "Island", "Default", "cm_pentagram") + AddTeam(loc("Badmad"), -9, "skull", "Island", "Default", "cm_pentagram") enemy9 = AddHog(loc("C-1"), 1, 50, "cyborg2") enemy10 = AddHog(loc("Hidden"), 1, 40, "bushhider") enemy11 = AddHog(loc("Ronald"), 1, 70, "clown") diff -r d4aa64f51c9f -r 310b167141cc share/hedgewars/Data/Scripts/SimpleMission.lua --- a/share/hedgewars/Data/Scripts/SimpleMission.lua Thu Dec 20 17:51:46 2018 +0100 +++ b/share/hedgewars/Data/Scripts/SimpleMission.lua Thu Dec 20 18:23:13 2018 +0100 @@ -53,27 +53,30 @@ - probability probability in crates (default: 0) TEAM DATA + - isMissionTeam if true, this is the player's chosen team for this mission (default: false) - hogs table of hedgehogs in this team (must contain at least 1 hog) - - name team name - clanID ID of the clan to which this team belongs to. Counting starts at 0. By default, each team goes into its own clan. Important: The clan of the player and allies MUST be 0. Important: You MUST either set the clan ID explicitly for all teams or none of them. + These arguments will be ignored if this is a mission team: + - name team name - flag flag name (default: hedgewars) - grave grave name (has default grave for each team) - fort fort name (default: Castle) HEDGEHOG DATA: - id optional identifier for goals - - name hog name + - health hog health (default: 100) + - ammo table of ammo types - x, y hog position (default: spawns randomly on land) - - botLevel 1-5: Bot level (lower=stronger). 0=human player (default: 0) - - hat hat name (default: NoHat) - - health hog health (default: 100) - poisoned if true, hedgehog starts poisoned with 5 poison damage. Set to a number for other poison damage (default: false) - frozen if true, hedgehogs starts frozen (default: false) - faceLeft initial facing direction. true=left, false=false (default: false) - - ammo table of ammo types + These arguments will be ignored if the hog is in a mission team: + - name hog name + - botLevel 1-5: Bot level (lower=stronger). 0=human player (default: 0) + - hat hat name (default: NoHat) GEAR TYPES: - type gear type @@ -656,12 +659,35 @@ else clanID = teamData.clanID end - grave = def(teamData.grave, defaultGraves[math.min(teamID, 8)]) - fort = def(teamData.fort, "Castle") - voice = def(teamData.voice, "Default") - flag = def(teamData.flag, defaultFlags[math.min(teamID, 8)]) + + local idx + if teamData.isMissionTeam then + idx = AddMissionTeam(-(clanID+1)) + _G.sm.playerClan = clanID + else + grave = def(teamData.grave, defaultGraves[math.min(teamID, 8)]) + fort = def(teamData.fort, "Castle") + voice = def(teamData.voice, "Default") + flag = def(teamData.flag, defaultFlags[math.min(teamID, 8)]) - AddTeam(name, -(clanID+1), grave, fort, voice, flag) + idx = AddTeam(name, -(clanID+1), grave, fort, voice, flag) + local realName = GetTeamName(idx) + -- Update all teamDefeat goals if the real team name differs from the + -- team configuration. + -- (AddTeam might change the name due to naming collisions) + if name ~= realName then + local checks = { params.customGoals, params.customNonGoals } + for c=1, 2 do + if checks[c] then + for k,goal in pairs(checks[c]) do + if goal.type == "teamDefeat" and goal.teamName == name then + goal.teamName = realName + end + end + end + end + end + end for hogID, hogData in pairs(teamData.hogs) do local name, botLevel, health, hat @@ -669,7 +695,12 @@ botLevel = def(hogData.botLevel, 0) health = def(hogData.health, 100) hat = def(hogData.hat, "NoHat") - local hog = AddHog(name, botLevel, health, hat) + local hog + if teamData.isMissionTeam then + hog = AddMissionHog(health) + else + hog = AddHog(name, botLevel, health, hat) + end if hogData.x ~= nil and hogData.y ~= nil then SetGearPosition(hog, hogData.x, hogData.y) end