share/hedgewars/Data/Maps/Knockball/map.lua
author smxx
Wed, 24 Mar 2010 14:03:03 +0000
changeset 3058 2ebc20485344
parent 3013 dfc1f16aeb53
child 3197 e1fa864fd6ca
permissions -rw-r--r--
Engine: * Free land objects right after map drawing Frontend: * No longer remove duplicates from friends/ignore lists (to keep Qt 4.4 compatibility) Maps: * No longer lock camera on balls on Knockball

-- Hedgewars - Knockball for 2+ Players

local caption = {
	["en"] = "Hedgewars-Knockball",
	["de"] = "Hedgewars-Knockball",
	["es"] = "Hedgewars-Knockball"
	}

local subcaption = {
	["en"] = "Not So Friendly Match",
	["de"] = "Kein-so-Freundschaftsspiel",
	["es"] = "Partido no-tan-amistoso"
	}

local goal = {
	["en"] = "Bat balls at your enemies and|push them into the sea!",
	["de"] = "Schlage Bälle auf deine Widersacher|und lass sie ins Meer fallen!",
	["es"] = "¡Batea pelotas hacia tus enemigos|y hazlos caer al agua!"
	}

local scored = {
	["en"] = "%s is out and Team %d|scored a point!| |Score:",
	["de"] = "%s ist draußen und Team %d|erhält einen Punkt!| |Punktestand:",
	["es"] = "¡%s cayó y Equipo %d|anotó un tanto!| |Puntuación:"
	}

local failed = {
	["en"] = "%s is out and Team %d|scored a penalty!| |Score:",
	["de"] = "%s ist draußen und Team %d|erhält eine Strafe!| |Punktestand:",
	["es"] = "¡%s cayó y Equipo %d|anotó una falta!| |Puntuación:"
	}

local function loc(text)
	if text == nil then return "**missing**"
	elseif text[L] == nil then return text["en"]
	else return text[L]
	end
end

---------------------------------------------------------------

local score = {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0}

local ball = nil

function onGameInit()
	GameFlags = gfSolidLand + gfInvulnerable + gfDivideTeams
	TurnTime = 20000
	CaseFreq = 0
	LandAdds = 0
	Explosives = 0
	Delay = 500
end

function onGameStart()
	ShowMission(loc(caption), loc(subcaption), loc(goal), -amBaseballBat, 0);
end

function onGameTick()
	if ball ~= nil and GetFollowGear() ~= nil then FollowGear(ball) end
end

function onAmmoStoreInit()
	SetAmmo(amBaseballBat, 9, 0, 0)
	SetAmmo(amSkip, 9, 0, 0)
end

function onGearAdd(gear)
	if GetGearType(gear) == gtShover then
		ball = AddGear(GetX(gear), GetY(gear), gtBall, 0, 0, 0, 0)
		if ball ~= nil then
			CopyPV2(gear, ball)
			SetState(ball, 0x200) -- temporary - might change!
			SetTag(ball, 8) -- baseball skin
			FollowGear(ball)
		end
	end
end

function onGearDelete(gear)
	if gear == ball then
		ball = nil
	elseif (GetGearType(gear) == gtHedgehog) and CurrentHedgehog ~= nil then
		local clan = GetHogClan(CurrentHedgehog)
		local s
		if GetHogClan(CurrentHedgehog) ~= GetHogClan(gear) then
			score[clan] = score[clan] + 1
			s = string.format(loc(scored), GetHogName(gear), clan + 1)
		else
			score[clan] = score[clan] - 1
			s = string.format(loc(failed), GetHogName(gear), clan + 1)
		end
		s = s .. " " .. score[0]
		for i = 1, ClansCount - 1 do s = s .. " - " .. score[i] end
		ShowMission(loc(caption), loc(subcaption), s, -amBaseballBat, 0)
	end
end