share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua
author mikade
Tue, 21 Jun 2011 20:49:47 +0200
changeset 5277 09beef0752ab
child 5362 5f0c46e78e50
permissions -rw-r--r--
PianoStrike exploit fix for Capture The Flag. New Gameplay Mode: The Specialists

----------------------------------
-- THE SPECIALISTS MODE 0.2
-- 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

--------------------
--TO DO
--------------------

-- add proper gameflag checking, maybe
-- set crate drops etc.
-- assuming place hog mode + gfinfattack doesn't get the fix: somehow end turn after teleport

loadfile(GetDataPath() .. "Scripts/Locale.lua")()

local numhhs = 0 
local hhs = {} 

local currName 
local lastName

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

function onGameTick()

	if (CurrentHedgehog ~= nil) then

		currName = GetHogName(CurrentHedgehog)
		
		if currName ~= lastName then
			AddCaption(loc("Switched to ") .. currName .. "!")
			AssignAmmo()		
		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