---------------------------------- -- 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