share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua
author belphegorr <szabibibi@gmail.com>
Mon, 23 Jul 2012 19:15:59 +0300
changeset 7263 644eabbc9218
parent 7139 a47fd17ba463
child 7791 b937274608ba
permissions -rw-r--r--
Added a new function: AddNewEvent, which only adds an event to the list if it doesn't already exist. Kept the old one as it might me useful to be able to add an event more than once.

--------------------------------
-- HIGHLANDER / HOGS OF WAR
-- version 0.3c
-- by mikade
--------------------------------

-----------
--0.1
-----------

-- concept test

-----------
--0.2
-----------

-- remove tardis till Henek fixes his tracker
-- change wep crates to health crates
-- reset arb turntimevalue
-- include randomOrder
-- Until fixed .17 methods come out, remove switches and resurrector
-- on request, removed kamikaze and piano weapons
-- provisional fixing of bugs that can't actually be fixed yet

-----------
--0.3
-----------

-- meh, update incorrect display
-- may change this in the future to have switches
-- but for now people are used to it without, so~

-- mudball is now counted as a utility

-----------
--0.3b
-----------

-- cleaned up code and got rid of unneccessary vars
-- mudball is a weapon again
-- landgun is now a utility
-- extra time, vampirism utility removed
-- hammer wep removed
-- all hogs have kamikaze

-----------
--0.3c
-----------

-- restructured some code
-- added napalm (whoops) to list of possible weapons you can get
-- hogs no longer recieve airstrike-related weps on border maps

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

local airWeapons = 	{amAirAttack, amMineStrike, amNapalm, amDrillStrike --[[,amPiano]]}

local atkArray = 	{
					amBazooka, amBee, amMortar, amDrill, --[[amSnowball,]]
					amGrenade, amClusterBomb, amMolotov, amWatermelon, amHellishBomb, amGasBomb,
					amShotgun, amDEagle, amFlamethrower, amSniperRifle, amSineGun,
					amFirePunch, amWhip, amBaseballBat, --[[amKamikaze,]] amSeduction, --[[amHammer,]]
					amMine, amDynamite, amCake, amBallgun, amRCPlane, amSMine,
					amRCPlane, amSMine,
					amBirdy
					}

local utilArray = 	{
					amBlowTorch, amPickHammer, amGirder, amPortalGun,
					amRope, amParachute, amTeleport, amJetpack,
					amInvulnerable, amLaserSight, --[[amVampiric,]]
					amLowGravity, amExtraDamage, --[[amExtraTime,]]
					amLandGun
					--[[,amTardis, amResurrector, amSwitch]]
					}

local wepArray = 	{}

local currName
local lastName
local started = false
local switchStage = 0

function StartingSetUp(gear)

	for i = 1, #wepArray do
		setGearValue(gear,wepArray[i],0)
	end

	setGearValue(gear,amKamikaze,1)

	i = 1 + GetRandom(#atkArray)
	setGearValue(gear,atkArray[i],1)

	i = 1 + GetRandom(#utilArray)
	setGearValue(gear,utilArray[i],1)

	SetHealth(gear, 100)

end

--[[function SaveWeapons(gear)

	-
	for i = 1, (#wepArray) do
		setGearValue(gear, wepArray[i], GetAmmoCount(gear, wepArray[i]) )
		 --AddAmmo(gear, wepArray[i], getGearValue(gear,wepArray[i]) )
	end

end]]

function ConvertValues(gear)

	for i = 1, #wepArray do
		AddAmmo(gear, wepArray[i], getGearValue(gear,wepArray[i]) )
	end


end


function TransferWeps(gear)

	if CurrentHedgehog ~= nil then

		for i = 1, #wepArray do
			val = getGearValue(gear,wepArray[i])
			if val ~= 0 then
				setGearValue(CurrentHedgehog, wepArray[i], val)
				AddAmmo(CurrentHedgehog, wepArray[i], val)
			end
		end

	end

end

function onGameInit()
	GameFlags = gfInfAttack + gfRandomOrder
	HealthCaseProb = 100
end

function onGameStart()


	ShowMission	(
				loc("HIGHLANDER"),
				loc("Not all hogs are born equal."),

				"- " .. loc("Eliminate enemy hogs and take their weapons.") .. "|" ..
				"- " .. loc("Per-Hog Ammo") .. "|" ..
				"- " .. loc("Weapons reset.") .. "|" ..
				"- " .. loc("Unlimited Attacks") .. "|" ..
				"", 4, 4000
				)

	if MapHasBorder() == false then
        for i, w in pairs(airWeapons) do
            table.insert(atkArray, w)
        end
    end

	for i, w in pairs(atkArray) do
        table.insert(wepArray, w)
	end

	for i, w in pairs(utilArray) do
        table.insert(wepArray, w)
	end

	runOnGears(StartingSetUp)
	runOnGears(ConvertValues)


end

function onNewTurn()
--
end


function onGameTick20()

	if (CurrentHedgehog ~= nil) then

		currName = GetHogName(CurrentHedgehog)

		if (currName ~= lastName) then
			AddCaption(loc("Switched to ") .. currName .. "!")
			ConvertValues(CurrentHedgehog)
		end

		lastName = currName
	end

end

--[[function onHogHide(gear)
	-- waiting for Henek
end

function onHogRestore(gear)
	-- waiting for Henek
end]]

function onGearAdd(gear)

	--if GetGearType(gear) == gtSwitcher then
	--	SaveWeapons(CurrentHedgehog)
	--end

	if (GetGearType(gear) == gtHedgehog) then
		trackGear(gear)
	end

end

function onGearDelete(gear)

	if (GetGearType(gear) == gtHedgehog) then --or (GetGearType(gear) == gtResurrector) then
		TransferWeps(gear)
		trackDeletion(gear)
	end

end

function onAmmoStoreInit()
	SetAmmo(amSkip, 9, 0, 0, 0)
	SetAmmo(amKamikaze, 9, 0, 0, 0)
	--SetAmmo(amSwitch, 9, 0, 0, 0) -------1
end