share/hedgewars/Data/Maps/Knockball/map.lua
author smxx
Thu, 01 Apr 2010 16:46:44 +0000
changeset 3240 e3b52d10b4c2
parent 3238 e99a43a2405b
child 3257 fff80d469185
permissions -rw-r--r--
Maps: * Basketball/Knockball: Avoid trying to count score or show mission goals before round start (would crash engine)

-- Hedgewars - Knockball for 2+ Players

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

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

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!",
	["pl"] = "Uderzaj piłkami w swoich przeciwników|i strącaj ich do wody!"
	}

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:",
	["pl"] = "%s utonął i drużyna %d|zdobyła punkt!| |Punktacja:"
	}

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:",
	["pl"] = "%s utonął i drużyna %d|dostała punkt karny!| |Punktacja:"
	}

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

local started = false

function onGameInit()
	GameFlags = gfSolidLand + gfInvulnerable + gfDivideTeams
	TurnTime = 20000
	CaseFreq = 0
	LandAdds = 0
	Explosives = 0
	Delay = 500
	SuddenDeathTurns = 99999 -- "disable" sudden death
end

function onGameStart()
	ShowMission(loc(caption), loc(subcaption), loc(goal), -amBaseballBat, 0)
	started = true
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 not started then
		return
	if gear == ball then
		ball = nil
	elseif (GetGearType(gear) == gtHedgehog) and CurrentHedgehog ~= nil then
		local clan = GetHogClan(CurrentHedgehog)
		local s
		if clan ~= nil then
			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
end