Enable autoswitch on turn start for The Specialists Mode.
Remove switch from Engineer wepset to prevent nemo getting combo'd again :)
----------------------------------
-- THE SPECIALISTS MODE 0.3
-- by mikade
----------------------------------
-- version history
-----------------
-- version 0.1
-----------------
-- concept test
----------------
-- version 0.2
----------------
-- added gfRandomOrder to gameflags
-- removed some deprecated variables/methods
-- fixed lack of portal reset
----------------
-- version 0.3
----------------
-- added switching on start
-- removed switch from engineer weaponset
--------------------
--TO DO
--------------------
-- add proper gameflag checking, maybe
-- set crate drops etc.
-- add alternative switch
loadfile(GetDataPath() .. "Scripts/Locale.lua")()
local numhhs = 0
local hhs = {}
local currName
local lastName
local started = false
local switchStage = 0
function CreateTeam()
currTeam = ""
lastTeam = ""
z = 0
for i = 0, (numhhs-1) do
currTeam = GetHogTeamName(hhs[i])
if currTeam == lastTeam then
z = z + 1
else
z = 1
end
if z == 1 then
SetHogName(hhs[i],"Soldier")
SetHogHat(hhs[i], "Vega")
SetHealth(hhs[i],200)
elseif z == 2 then
SetHogHat(hhs[i], "Glasses")
SetHogName(hhs[i],"Engineer")
elseif z == 3 then
SetHogName(hhs[i],"Ninja")
SetHogHat(hhs[i], "NinjaFull")
SetHealth(hhs[i],80)
elseif z == 4 then
SetHogName(hhs[i],"Demo")
SetHogHat(hhs[i], "Skull")
SetHealth(hhs[i],200)
elseif z == 5 then
SetHogName(hhs[i],"Sniper")
SetHogHat(hhs[i], "Sniper")
SetHealth(hhs[i],120)
elseif z == 6 then
SetHogName(hhs[i],"Saint")
SetHogHat(hhs[i], "angel")
SetHealth(hhs[i],300)
elseif z == 7 then
SetHogName(hhs[i],"Pyro")
SetHogHat(hhs[i], "Gasmask")
SetHealth(hhs[i],150)
elseif z == 8 then
SetHogName(hhs[i],"Loon")
SetHogHat(hhs[i], "clown")
SetHealth(hhs[i],100)
end
lastTeam = GetHogTeamName(hhs[i])
end
end
function ResetAllAmmo()
AddAmmo(CurrentHedgehog, amBazooka, 0)
AddAmmo(CurrentHedgehog, amGrenade, 0)
AddAmmo(CurrentHedgehog, amShotgun, 0)
AddAmmo(CurrentHedgehog, amGirder, 0)
AddAmmo(CurrentHedgehog, amBlowTorch, 0)
AddAmmo(CurrentHedgehog, amPickHammer, 0)
AddAmmo(CurrentHedgehog, amSwitch, 0)
AddAmmo(CurrentHedgehog, amRope, 0)
AddAmmo(CurrentHedgehog, amParachute, 0)
AddAmmo(CurrentHedgehog, amFirePunch, 0)
AddAmmo(CurrentHedgehog, amDynamite, 0)
AddAmmo(CurrentHedgehog, amDrill, 0)
AddAmmo(CurrentHedgehog, amMine, 0)
AddAmmo(CurrentHedgehog, amSniperRifle, 0)
AddAmmo(CurrentHedgehog, amDEagle, 0)
AddAmmo(CurrentHedgehog, amPortalGun, 0)
AddAmmo(CurrentHedgehog, amSeduction, 0)
AddAmmo(CurrentHedgehog, amResurrector, 0)
AddAmmo(CurrentHedgehog, amInvulnerable, 0)
AddAmmo(CurrentHedgehog, amFlamethrower, 0)
AddAmmo(CurrentHedgehog, amMolotov, 0)
AddAmmo(CurrentHedgehog, amNapalm, 0)
AddAmmo(CurrentHedgehog, amBaseballBat, 0)
AddAmmo(CurrentHedgehog, amGasBomb, 0)
AddAmmo(CurrentHedgehog, amKamikaze, 0)
end
function AssignAmmo()
ResetAllAmmo()
n = GetHogName(CurrentHedgehog)
AddAmmo(CurrentHedgehog, amSkip,100)
if n == "Soldier" then
AddAmmo(CurrentHedgehog, amBazooka,1)
AddAmmo(CurrentHedgehog, amGrenade,1)
AddAmmo(CurrentHedgehog, amShotgun,1)
elseif n == "Engineer" then
AddAmmo(CurrentHedgehog, amGirder, 2)
AddAmmo(CurrentHedgehog, amBlowTorch, 1)
AddAmmo(CurrentHedgehog, amPickHammer, 1)
--AddAmmo(CurrentHedgehog, amSwitch, 2)
elseif n == "Ninja" then
AddAmmo(CurrentHedgehog, amRope, 100)
AddAmmo(CurrentHedgehog, amParachute, 100)
AddAmmo(CurrentHedgehog, amFirePunch, 1)
elseif n == "Demo" then
AddAmmo(CurrentHedgehog, amDynamite, 1)
AddAmmo(CurrentHedgehog, amMine, 1)
AddAmmo(CurrentHedgehog, amDrill, 1)
elseif n == "Sniper" then
AddAmmo(CurrentHedgehog, amSniperRifle, 1)
AddAmmo(CurrentHedgehog, amDEagle, 1)
AddAmmo(CurrentHedgehog, amPortalGun, 2)
elseif n == "Saint" then
AddAmmo(CurrentHedgehog, amSeduction, 100)
AddAmmo(CurrentHedgehog, amResurrector, 1)
AddAmmo(CurrentHedgehog, amInvulnerable, 1)
elseif n == "Pyro" then
AddAmmo(CurrentHedgehog, amFlamethrower, 1)
AddAmmo(CurrentHedgehog, amMolotov, 1)
AddAmmo(CurrentHedgehog, amNapalm, 1)
elseif n == "Loon" then
AddAmmo(CurrentHedgehog, amBaseballBat, 1)
AddAmmo(CurrentHedgehog, amGasBomb, 1)
AddAmmo(CurrentHedgehog, amKamikaze, 1)
end
end
function onGameInit()
GameFlags = gfRandomOrder + gfResetWeps + gfInfAttack + gfPlaceHog
Delay = 10
end
function onGameStart()
CreateTeam()
ShowMission (
loc("THE SPECIALISTS"),
loc("a Hedgewars mini-game"),
loc("Eliminate the enemy specialists.") .. "|" ..
" " .. "|" ..
loc("Game Modifiers: ") .. "|" ..
loc("Per-Hog Ammo") .. "|" ..
loc("Weapons Reset") .. "|" ..
loc("Unlimited Attacks") .. "|" ..
"", 4, 4000
)
end
function onNewTurn()
currName = GetHogName(CurrentHedgehog)
lastName = GetHogName(CurrentHedgehog)
AssignAmmo()
--AddAmmo(CurrentHedgehog, amSwitch, 1)
---------------
--switch
started = false
switchStage = 0
---------------
end
function onGameTick()
if (CurrentHedgehog ~= nil) then
currName = GetHogName(CurrentHedgehog)
if currName ~= lastName then
AddCaption(loc("Switched to ") .. currName .. "!")
AssignAmmo()
end
if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) and (switchStage < 100) then
switchStage = switchStage + 1
if switchStage == 10 then
AddAmmo(CurrentHedgehog, amSwitch, 1)
elseif switchStage == 20 then
ParseCommand("setweap " .. string.char(amSwitch))
elseif switchStage == 30 then
SetGearMessage(CurrentHedgehog,gmAttack)
switchStage = 110
end
end
--------------------------------------------------------------------------------------
lastName = currName
end
end
function onGearAdd(gear)
if GetGearType(gear) == gtHedgehog then
hhs[numhhs] = gear
numhhs = numhhs + 1
end
end
function onGearDelete(gear)
--
end
function onAmmoStoreInit()
--
end