# HG changeset patch # User mikade # Date 1309726077 -7200 # Node ID d5321b22aed2a9c8df2612ede749384515a47a10 # Parent 6ba1e40a360c739e446d90eddecc42a3d9fa4c11 Altered switch behavior on 'The Specialists'. diff -r 6ba1e40a360c -r d5321b22aed2 share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua Sun Jul 03 14:36:42 2011 -0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua Sun Jul 03 22:47:57 2011 +0200 @@ -1,5 +1,5 @@ ---------------------------------- --- THE SPECIALISTS MODE 0.3 +-- THE SPECIALISTS MODE 0.4 -- by mikade ---------------------------------- @@ -22,6 +22,13 @@ -- added switching on start -- removed switch from engineer weaponset +---------------- +-- version 0.4 +---------------- +-- Attempted to: +-- fix potential switch explit +-- improve user feedback on start + -------------------- --TO DO -------------------- @@ -32,204 +39,204 @@ loadfile(GetDataPath() .. "Scripts/Locale.lua")() -local numhhs = 0 -local hhs = {} +local numhhs = 0 +local hhs = {} -local currName +local currName local lastName local started = false local switchStage = 0 function CreateTeam() - currTeam = "" - lastTeam = "" - z = 0 + currTeam = "" + lastTeam = "" + z = 0 - for i = 0, (numhhs-1) do + for i = 0, (numhhs-1) do - currTeam = GetHogTeamName(hhs[i]) + currTeam = GetHogTeamName(hhs[i]) - if currTeam == lastTeam then - z = z + 1 - else - z = 1 - end + if currTeam == lastTeam then + z = z + 1 + else + z = 1 + end - if z == 1 then + if z == 1 then - SetHogName(hhs[i],"Soldier") - SetHogHat(hhs[i], "Vega") - SetHealth(hhs[i],200) + SetHogName(hhs[i],"Soldier") + SetHogHat(hhs[i], "Vega") + SetHealth(hhs[i],200) - elseif z == 2 then + elseif z == 2 then - SetHogHat(hhs[i], "Glasses") - SetHogName(hhs[i],"Engineer") + SetHogHat(hhs[i], "Glasses") + SetHogName(hhs[i],"Engineer") - elseif z == 3 then + elseif z == 3 then - SetHogName(hhs[i],"Ninja") - SetHogHat(hhs[i], "NinjaFull") - SetHealth(hhs[i],80) + SetHogName(hhs[i],"Ninja") + SetHogHat(hhs[i], "NinjaFull") + SetHealth(hhs[i],80) - elseif z == 4 then + elseif z == 4 then - SetHogName(hhs[i],"Demo") - SetHogHat(hhs[i], "Skull") - SetHealth(hhs[i],200) + SetHogName(hhs[i],"Demo") + SetHogHat(hhs[i], "Skull") + SetHealth(hhs[i],200) - elseif z == 5 then + elseif z == 5 then - SetHogName(hhs[i],"Sniper") - SetHogHat(hhs[i], "Sniper") - SetHealth(hhs[i],120) + SetHogName(hhs[i],"Sniper") + SetHogHat(hhs[i], "Sniper") + SetHealth(hhs[i],120) - elseif z == 6 then + elseif z == 6 then - SetHogName(hhs[i],"Saint") - SetHogHat(hhs[i], "angel") - SetHealth(hhs[i],300) + SetHogName(hhs[i],"Saint") + SetHogHat(hhs[i], "angel") + SetHealth(hhs[i],300) - elseif z == 7 then + elseif z == 7 then + + SetHogName(hhs[i],"Pyro") + SetHogHat(hhs[i], "Gasmask") + SetHealth(hhs[i],150) + + elseif z == 8 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) + SetHogName(hhs[i],"Loon") + SetHogHat(hhs[i], "clown") + SetHealth(hhs[i],100) - end + end - lastTeam = GetHogTeamName(hhs[i]) + lastTeam = GetHogTeamName(hhs[i]) - end + 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, amBazooka, 0) + AddAmmo(CurrentHedgehog, amGrenade, 0) + AddAmmo(CurrentHedgehog, amShotgun, 0) - AddAmmo(CurrentHedgehog, amRope, 0) - AddAmmo(CurrentHedgehog, amParachute, 0) - AddAmmo(CurrentHedgehog, amFirePunch, 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, amDynamite, 0) + AddAmmo(CurrentHedgehog, amDrill, 0) + AddAmmo(CurrentHedgehog, amMine, 0) - AddAmmo(CurrentHedgehog, amSniperRifle, 0) - AddAmmo(CurrentHedgehog, amDEagle, 0) - AddAmmo(CurrentHedgehog, amPortalGun, 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) + 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) + ResetAllAmmo() + n = GetHogName(CurrentHedgehog) - AddAmmo(CurrentHedgehog, amSkip,100) + 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 + 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) + 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 + GameFlags = gfRandomOrder + gfResetWeps + gfInfAttack + gfPlaceHog + Delay = 10 end function onGameStart() - - CreateTeam() + + CreateTeam() - ShowMission ( - loc("THE SPECIALISTS"), - loc("a Hedgewars mini-game"), + ShowMission ( + loc("THE SPECIALISTS"), + loc("a Hedgewars mini-game"), - loc("Eliminate the enemy specialists.") .. "|" .. - " " .. "|" .. + loc("Eliminate the enemy specialists.") .. "|" .. + " " .. "|" .. - loc("Game Modifiers: ") .. "|" .. - loc("Per-Hog Ammo") .. "|" .. - loc("Weapons Reset") .. "|" .. - loc("Unlimited Attacks") .. "|" .. + loc("Game Modifiers: ") .. "|" .. + loc("Per-Hog Ammo") .. "|" .. + loc("Weapons Reset") .. "|" .. + loc("Unlimited Attacks") .. "|" .. - "", 4, 4000 - ) + "", 4, 4000 + ) end function onNewTurn() - currName = GetHogName(CurrentHedgehog) - lastName = GetHogName(CurrentHedgehog) - AssignAmmo() - - --AddAmmo(CurrentHedgehog, amSwitch, 1) + currName = GetHogName(CurrentHedgehog) + lastName = GetHogName(CurrentHedgehog) + AssignAmmo() + + --------------- + --switch + started = false + switchStage = 0 + --AddAmmo(CurrentHedgehog, amSwitch, 1) --------------- - --switch - started = false - switchStage = 0 - --------------- + end function onGameTick() @@ -238,27 +245,30 @@ currName = GetHogName(CurrentHedgehog) - if currName ~= lastName then + if (currName ~= lastName) and (switchStage > 100) then AddCaption(loc("Switched to ") .. currName .. "!") AssignAmmo() end if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) and (switchStage < 100) then + AddCaption(loc("Prepare yourself") .. ", " .. currName .. "!") + switchStage = switchStage + 1 - if switchStage == 10 then + if switchStage == 1 then AddAmmo(CurrentHedgehog, amSwitch, 1) - elseif switchStage == 20 then + + elseif switchStage == 2 then ParseCommand("setweap " .. string.char(amSwitch)) - elseif switchStage == 30 then + elseif switchStage == 3 then SetGearMessage(CurrentHedgehog,gmAttack) + elseif switchStage == 4 then switchStage = 110 + AddAmmo(CurrentHedgehog, amSwitch, 0) end end - -------------------------------------------------------------------------------------- - lastName = currName end @@ -266,11 +276,11 @@ end function onGearAdd(gear) - - if GetGearType(gear) == gtHedgehog then - hhs[numhhs] = gear - numhhs = numhhs + 1 - end + + if GetGearType(gear) == gtHedgehog then + hhs[numhhs] = gear + numhhs = numhhs + 1 + end end @@ -282,5 +292,3 @@ -- end - -