share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua
author Vatten
Thu, 03 May 2018 11:58:07 +0200
changeset 13359 7d772358dc22
parent 12940 39b7b3ed619e
child 13360 e27540ad33bd
permissions -rw-r--r--
Updated Continental supplies Noticable changes: * Selection of continent is now before a turn * Australia and Antarctica will have new moddable weapons * All continents have different starting healths per hog

--[[
	Copyright (C) 2012 Vatten

	Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

	The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
]]
-- fix selection increase delay (weapons to compesate)

HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Utils.lua")
HedgewarsScriptLoad("/Scripts/Tracker.lua")

--approximative version of square root. This function follows the babylonian method.
function IntegerSqrt(num)
	local temp=num
	while(temp*temp-div(temp,2)>num)
	do
		temp=div((temp+div(num,temp)),2)
	end

	return math.abs(temp)
end

-- sqrt(x^2,y^2), work without desyncs. is approximative
function Norm(xx,yy)
	--to fix overflows
	if(((math.abs(xx)^2)+(math.abs(yy)^2))>2^26)
	then
		local bitr=2^13
		return IntegerSqrt((div(math.abs(xx),bitr)^2)+(div(math.abs(yy),bitr)^2))*bitr
	else
		return IntegerSqrt((math.abs(xx)^2)+(math.abs(yy)^2))
	end
end

-- returns 1 or -1 depending on where it is
function GetIfNegative(num)
	if(num<0)
	then
		return -1
	else
		return 1
	end
end

--Will end the turn + give escape time
function EndTurn(seconds)
	SetState(CurrentHedgehog,bor(GetState(CurrentHedgehog),gstAttacked))
	--set espace time
	TurnTimeLeft = GetAwayTime*10*seconds
 end

 --show health tag (will mostly be used when a hog is damaged)
function ShowDamageTag(hog,damage)
	healthtag=AddVisualGear(GetX(hog), GetY(hog), vgtHealthTag, damage, false)
	v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 = GetVisualGearValues(healthtag)
	SetVisualGearValues(healthtag, v1, v2, v3, v4, v5, v6, v7, v8, v9, GetClanColor(GetHogClan(hog)))
end

--will use IntegerSqrt
function FireGear(hedgehog,geartype,vx,vy,timer)
	local hypo=Norm(vx,vy)
	return AddGear(div((GetGearRadius(hedgehog)*2*vx),hypo)+GetX(hedgehog), div((GetGearRadius(hedgehog)*2*vy),hypo)+GetY(hedgehog), geartype, 0, vx, vy, timer)
end

--====MISC GLOBALS====

--for selecting continent
local GLOBAL_INIT_TEAMS = {}
local GLOBAL_SELECT_CONTINENT_CHECK=false
local GLOBAL_START_TIME=0
local GLOBAL_HOG_HEALTH=100
local GLOBAL_TEAM_CONTINENT = {}

--variables for seeing if you have swaped around on a weapon
local GLOBAL_AUSTRALIAN_SPECIAL=0
local GLOBAL_AFRICAN_SPECIAL_SEDUCTION=0
local GLOBAL_AFRICAN_SPECIAL_STICKY=0
local GLOBAL_SOUTH_AMERICAN_SPECIAL=false
local GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER=1
local GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON=false
local GLOBAL_KERGUELEN_SPECIAL=1
local GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN=false
local GLOBAL_EUROPE_SPECIAL=0
local GLOBAL_ANTARCTICA_SPECIAL=0
local GLOBAL_SEDUCTION_INCREASER=0

--detection if something is activated
local GLOBAL_SWITCH_HOG_IS_ON=false
local GLOBAL_VAMPIRIC_IS_ON=0
local GLOBAL_EXTRA_DAMAGE_IS_ON=100
local GLOBAL_PARACHUTE_IS_ON=false

--the visual circle for kerguelen
local GLOBAL_VISUAL_CIRCLE=nil

--the global temp value
local GLOBAL_TEMP_VALUE=0

--for sabotage
local GLOBAL_SABOTAGE_COUNTER=0
local GLOBAL_SABOTAGE_HOGS={}
local GLOBAL_SABOTAGE_FREQUENCY=0

local GLOBAL_CRATE_TEST=-1

--for sundaland
local GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME

local OPTION_NO_SPECIALS=false

--====GENERAL GLOBALS (useful for handling continents)====

local GLOBAL_SNIPER_SPECIAL_INFO = loc("Green lipstick bullet: [Poisonous, deals no damage]")
local GLOBAL_BASEBALLBAT_BOOMERANG_INFO = loc("Bouncy boomerang: [Launch your bouncy boomerang ~ Turns into a present on explosion]")
local GLOBAL_CHEESE_SPECIAL_INFO = loc("Anno 1032: [The explosion will make a strong push ~ No poison]")
local GLOBAL_SEDUCTION_SPECIAL_INFO = loc("Dust storm: [Deals 15 + %s damage to all enemies in the circle]")
local GLOBAL_INVULNERABLE_SPECIAL_INFO = loc("Temporarily increase the damage of duststorm with +7%s, Removes 1 Invurnurable%s")
local GLOBAL_BASEBALLBAT_CRICKET_INFO = loc("Cricket time: [Fire away a 1 sec mine! ~ Cannot be fired close to another hog]")
local GLOBAL_PARACHUTE_SPECIAL_INFO = loc("Drop a bomb: [Drop some heroic wind that will turn into a bomb on impact ~ wont end turn]")
local GLOBAL_HAMMER_ROAR_INFO = loc("Penguin roar: [Deal 15 damage + 10% of your hog’s health to all hogs around you and get 2/3 back]")
local GLOBAL_HAMMER_SWAP_INFO = loc("Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]")
local GLOBAL_HAMMER_LONELY_INFO = loc("Lonely Cries: [Rise the water if no hog is in the circle and deal 6 damage to all enemy hogs.]")
local GLOBAL_STICKY_PROJECTILE_INFO = loc("Hedgehog projectile: [Fire your hog like a Sticky Bomb]")
local GLOBAL_STICKY_NAPALM_INFO = loc("Napalm rocket: [Fire a bomb with napalm!]")
local GLOBAL_SHOTGUN_SPECIAL_INFO = loc("Eagle Eye: [Blink to the impact ~ One shot]")
local GLOBAL_MOLOTOV_SPECIAL_INFO = loc("Medicine: [Fire some exploding medicine that will heal 15 hp to all hogs effected by the explosion]")
local GLOBAL_HAMMER_SABOTAGE_INFO = loc("Flare: [Sabotage all hogs in the circle (dmg over time and high gravity) and fire one cluster above you]")
local GLOBAL_PICKHAMMER_SPECIAL_INFO = loc("World wrap: [Will teleport you to the top of the map, expect fall damage]")

local GLOBAL_ALL_SPECIALS_INFO = loc("Weapons with specials: ")..loc("Shotgun")..", "..loc("Sniper Rifle")..", "..loc("GasBomb")..", "..loc("Molotov")..", "..loc("Parachute")..", "..loc("Seduction")..", "..loc("Sticky Mine").." (2),"..loc("Baseballbat (2)")..", "..loc("Hammer (4)")

local GLOBAL_SELECT_WEP_INFORMATION=loc("Select your continent with: the \"Up\" or \"Down\" keys, or by selecting a representative weapon.")
local GLOBAL_GENERAL_INFORMATION="- "..loc("Per team weapons").."|- "..loc("10 weapon schemes").."|- "..loc("Unique new weapons").."| |"..GLOBAL_SELECT_WEP_INFORMATION.."|"..loc("Note: Some weapons have a second option (See continent information). Find and use them with the \"")..loc("switch").."\" "..loc("key").." (↹).|"..GLOBAL_ALL_SPECIALS_INFO.."|"..loc("Tip: See the \"esc\" key (this menu) if you want to see the currently playing teams continent, or that continents specials." .. "|")

local GLOBAL_CONTINENT_INFORMATION =
{
{loc("North America"),"["..loc("Difficulty: ")..loc("EASY").."] ",loc("- You can switch between hogs at the start of your turns. (Not first one)").."|"..loc("Special Weapons:").."|"..loc("Shotgun")..": "..GLOBAL_SHOTGUN_SPECIAL_INFO.."|"..loc("Sniper Rifle")..": "..GLOBAL_SNIPER_SPECIAL_INFO,{amSniperRifle,1},
{{amShotgun,100},{amDEagle,100},{amLaserSight,2},{amSniperRifle,100},{amCake,1},{amAirAttack,2},{amSwitch,2}},
},
--{sndShotgunFire,sndCover},100},

{loc("South America"),"["..loc("Difficulty: ")..loc("MEDIUM").."] ",loc("Special Weapons:").."|"..loc("GasBomb")..": "..GLOBAL_CHEESE_SPECIAL_INFO,{amGasBomb,2},
{{amBirdy,100},{amHellishBomb,1},{amBee,100},{amGasBomb,100},{amFlamethrower,100},{amNapalm,2},{amExtraDamage,3}},
{sndEggBreak,sndLaugh},125},

{loc("Europe"),"["..loc("Difficulty: ")..loc("EASY").."] ",loc("Special Weapons:").."|"..loc("Molotov")..": "..GLOBAL_MOLOTOV_SPECIAL_INFO,{amBazooka,3},
{{amBazooka,100},{amGrenade,100},{amMortar,100},{amMolotov,100},{amVampiric,4},{amPiano,1},{amResurrector,2},{amJetpack,4}},
{sndExplosion,sndEnemyDown},100},

{loc("Africa"),"["..loc("Difficulty: ")..loc("MEDIUM").."] ",loc("Special Weapons:").."|"..loc("Seduction")..": "..string.format(GLOBAL_SEDUCTION_SPECIAL_INFO,loc("(*see below)")).."|- "..string.format(GLOBAL_INVULNERABLE_SPECIAL_INFO,"","").."|- "..loc("You can modify the damage/invulnerables with the up/down keys on dust storm.").."|"..loc("Sticky Mine")..": "..GLOBAL_STICKY_PROJECTILE_INFO.."|"..loc("Sticky Mine")..": "..GLOBAL_STICKY_NAPALM_INFO,{amSMine,4},
{{amSMine,100},{amWatermelon,1},{amDrillStrike,1},{amDrill,100},{amInvulnerable,7},{amSeduction,100},{amLandGun,3}},
{sndMelonImpact,sndCoward},125},

{loc("Asia"),"["..loc("Difficulty: ")..loc("MEDIUM").."] ",loc("- Will give you a parachute every third turn.").."|"..loc("Special Weapons:").."|"..loc("Parachute")..": "..GLOBAL_PARACHUTE_SPECIAL_INFO,{amRope,5},
{{amRope,100},{amFirePunch,100},{amParachute,1},{amKnife,2},{amDynamite,1}},
{sndRopeAttach,sndComeonthen},50},

{loc("Australia"),"["..loc("Difficulty: ")..loc("EASY").."] ",loc("Special Weapons:").."|"..loc("Baseballbat")..": "..GLOBAL_BASEBALLBAT_CRICKET_INFO.."|"..loc("Baseballbat")..": "..GLOBAL_BASEBALLBAT_BOOMERANG_INFO,{amBaseballBat,6},
{{amBaseballBat,100},{amMine,100},{amLowGravity,4},{amBlowTorch,100},{amRCPlane,2},{amRubber,4}},
{sndBaseballBat,sndNooo},100},

{loc("Antarctica"),"["..loc("Difficulty: ")..loc("HARD").."] ",loc("Antarctic summer: - Will give you girders=1,mudballs=1,sineguns=2,portals=1 every fourth turn.").."|"..loc("Special Weapons:").."|"..loc("Pick hammer")..": "..GLOBAL_PICKHAMMER_SPECIAL_INFO,{amIceGun,7},
{{amSnowball,2},{amPickHammer,100},{amSineGun,4},{amGirder,1},{amExtraTime,1},{amIceGun,1},{amPortalGun,2}},
{sndSineGun,sndOops},75},

{loc("Kerguelen"),"["..loc("Difficulty: ")..loc("EASY").."] ",loc("Special Weapons:").."|"..loc("Hammer")..": "..GLOBAL_HAMMER_ROAR_INFO.."|"..loc("Hammer")..": "..GLOBAL_HAMMER_SWAP_INFO.."|"..loc("Hammer")..": "..GLOBAL_HAMMER_LONELY_INFO.."|"..loc("Hammer")..": "..GLOBAL_HAMMER_SABOTAGE_INFO,{amHammer,8},
{{amHammer,100},{amMineStrike,1},{amBallgun,1},{amTeleport,1}},
{sndPiano5,sndStupid},75},

{loc("Zealandia"),"["..loc("Difficulty: ")..loc("MEDIUM").."] ",loc("- Will Get 1-3 random weapons") .. "|" .. loc("- Massive weapon bonus on first turn|You will lose all your weapons each turn."),{amInvulnerable,9},
{{amBazooka,1},{amGrenade,1},{amBlowTorch,1},{amSwitch,1},{amRope,1},{amDrill,1},{amDEagle,1},{amPickHammer,1},{amFirePunch,1},{amWhip,1},{amMortar,1},{amSnowball,1},{amExtraTime,1},{amInvulnerable,1},{amVampiric,1},{amFlamethrower,1},{amBee,1},{amClusterBomb,1},{amTeleport,1},{amLowGravity,1},{amJetpack,1},{amGirder,1},{amLandGun,1},{amBirdy,1},{amAirMine,1},{amTardis,1},{amLaserSight,1},{amAirMine,1}},
{sndSplash,sndFirstBlood},100},

{loc("Sundaland"),"["..loc("Difficulty: ")..loc("HARD").."] ",loc("- You will recieve 6 weapons on each kill! (Even on own hogs)"),{amTardis,10},
{{amClusterBomb,5},{amTardis,100},{amWhip,100},{amKamikaze,100},{amAirMine,2},{amDuck,2}},
{sndWarp,sndSameTeam},100}

}

--very strange bug
GLOBAL_CONTINENT_INFORMATION[1][7]=100
GLOBAL_CONTINENT_INFORMATION[1][6]={sndShotgunFire,sndCover}

--weapontype,ammo,?,duration,*times your choice,affect on random team (should be placed with 1,0,1,0,1 on the 6th option for better randomness)
local GLOBAL_WEAPONS_DAMAGE = {
	{amKamikaze,    0, 1, 0, 1, 0},
	{amSineGun,     0, 1, 0, 1, 0},
	{amMineStrike,  0, 1, 6, 1, 1},
	{amGrenade,     0, 1, 0, 1, 0},
	{amPiano,       0, 1, 7, 1, 0},
	{amClusterBomb, 0, 1, 0, 1, 0},
	{amBee,         0, 1, 0, 1, 0},
	{amShotgun,     0, 1, 0, 1, 0},
	{amSniperRifle, 0, 1, 0, 1, 0},
	{amDynamite,    0, 1, 6, 1, 1},
	{amFirePunch,   0, 1, 0, 1, 0},
	{amHellishBomb, 0, 1, 6, 1, 2},
	{amWhip,        0, 1, 0, 1, 0},
	{amNapalm,      0, 1, 6, 1, 1},
	{amPickHammer,  0, 1, 0, 1, 0},
	{amBaseballBat, 0, 1, 0, 1, 1},
	{amMortar,      0, 1, 0, 1, 0},
	{amCake,        0, 1, 5, 1, 2},
	{amSeduction,   0, 1, 0, 1, 0},
	{amWatermelon,  0, 1, 6, 1, 2},
	{amDrill,       0, 1, 0, 1, 0},
	{amBallgun,     0, 1, 8, 1, 2},
	{amDEagle,      0, 1, 0, 1, 0},
	{amMolotov,     0, 1, 0, 1, 0},
	{amHammer,      0, 1, 0, 1, 1},
	{amBirdy,       0, 1, 0, 1, 0},
	{amRCPlane,     0, 1, 6, 1, 2},
	{amMine,        0, 1, 0, 1, 0},
	{amGasBomb,     0, 1, 0, 1, 0},
	{amAirAttack,   0, 1, 5, 1, 1},
	{amBlowTorch,   0, 1, 0, 1, 0},
	{amFlamethrower,0, 1, 0, 1, 0},
	{amSMine,       0, 1, 0, 1, 0},
	{amSnowball,    0, 1, 0, 1, 0},
	{amKnife,       0, 1, 0, 1, 0},
	{amDrillStrike, 0, 1, 5, 1, 1},
	{amBazooka,     0, 1, 0, 1, 0},
	{amAirMine,     0, 1, 0, 1, 0},
	{amDuck,        0, 1, 0, 1, 0}
}
local GLOBAL_WEAPONS_SUPPORT = {
	{amParachute,   0, 1, 0, 1, 0},
	{amGirder,      0, 1, 0, 1, 0},
	{amSwitch,      0, 1, 0, 1, 0},
	{amLowGravity,  0, 1, 0, 1, 0},
	{amExtraDamage, 0, 1, 2, 1, 0},
	{amRope,        0, 1, 0, 1, 0},
	{amInvulnerable,0, 1, 0, 1, 0},
	{amExtraTime,   0, 1, 0, 1, 0},
	{amLaserSight,  0, 1, 0, 1, 0},
	{amVampiric,    0, 1, 0, 1, 0},
	{amJetpack,     0, 1, 0, 1, 0},
	{amPortalGun,   0, 1, 3, 1, 1},
	{amResurrector, 0, 1, 2, 1, 0},
	{amTeleport,    0, 1, 0, 1, 0},
	{amLandGun,     0, 1, 0, 1, 0},
	{amTardis,      0, 1, 0, 1, 0},
	{amIceGun,      0, 1, 0, 1, 0},
	{amRubber,      0, 1, 0, 1, 0}

}

--check if weps valid
function wepNotValidBorder(weapon)
	if(MapHasBorder() == false or (weapon ~= amAirAttack and weapon ~= amMineStrike and weapon ~= amNapalm and weapon ~= amDrillStrike and weapon ~= amPiano))
	then
		return true
	end

	return false
end

--will check after borders and stuff
function ValidateWeapon(hog,weapon,amount)
	if(wepNotValidBorder(weapon))
	then
		if(amount==1)
		then
			AddAmmo(hog, weapon)
		else
			AddAmmo(hog, weapon,amount)
		end
	end
end

function SpawnRandomCrate(x,y,strength)
	local tot=table.maxn(GLOBAL_WEAPONS_SUPPORT)+table.maxn(GLOBAL_WEAPONS_DAMAGE)
	local rand=GetRandom(tot)+1

	if(rand>table.maxn(GLOBAL_WEAPONS_SUPPORT))
	then
		local weapon=rand-table.maxn(GLOBAL_WEAPONS_SUPPORT)

		while(wepNotValidBorder(GLOBAL_WEAPONS_DAMAGE[weapon][1])==false)
		do
			if(weapon>=table.maxn(GLOBAL_WEAPONS_DAMAGE))
			then
				weapon=0
			end
			weapon = weapon+1
		end

		SpawnAmmoCrate(x, y, GLOBAL_WEAPONS_DAMAGE[weapon][1])
	else
		SpawnUtilityCrate(x, y, GLOBAL_WEAPONS_SUPPORT[rand][1])
	end
end

--removes one weapon
function RemoveWeapon(hog,weapon)

	if(GetAmmoCount(hog, weapon)<100)
	then
		AddAmmo(hog,weapon,GetAmmoCount(hog, weapon)-1)
	end
end

--reset all weapons for a team
function CleanWeapons(hog)

	local i=1
	--+1 for skip
	while(i<=table.maxn(GLOBAL_WEAPONS_SUPPORT)+table.maxn(GLOBAL_WEAPONS_DAMAGE)+1)
	do
		AddAmmo(hog,i,0)
		i=i+1
	end

	AddAmmo(hog,amSkip,100)
end

--get the weapons from a weaponset
function LoadWeaponset(hog, num)
	for v,w in pairs(GLOBAL_CONTINENT_INFORMATION[num][5])
	do
		ValidateWeapon(hog, w[1],w[2])
	end

	GLOBAL_TEMP_VALUE=GLOBAL_CONTINENT_INFORMATION[num][7]
	runOnGears(SetHogHealth)
end

--list up all weapons from the icons for each continent
function InitWeaponsMenu(hog)

	if(GetHogLevel(hog)==0 or GLOBAL_CONTINENT_INFORMATION[1][6][1]==sndFrozenHogImpact)
	then
		for v,w in pairs(GLOBAL_CONTINENT_INFORMATION)
		do
			ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[v][4][1],1)
		end
		AddAmmo(hog,amSwitch) --random continent

	--for the computers
	else
		--europe
		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[3][4][1],1)
		--north america
		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[1][4][1],1)
	end
end

--shows the continent info
function ShowContinentInfo(continent,time,generalinf)
	local geninftext=""
	local ns=false
	if(time==-1)
	then
		time=0
		ns=true
	end
	if(generalinf)
	then
		geninftext="| |"..loc("General information")..": |"..GLOBAL_GENERAL_INFORMATION
	end

	ShowMission(GLOBAL_CONTINENT_INFORMATION[continent][1],GLOBAL_CONTINENT_INFORMATION[continent][2]..loc(" Starting HP: ")..GLOBAL_CONTINENT_INFORMATION[continent][7],GLOBAL_CONTINENT_INFORMATION[continent][3]..geninftext, GLOBAL_CONTINENT_INFORMATION[continent][4][2], time)
	if(ns)
	then
		HideMission()
	end
end

--will show a circle of gears (eye candy)
function VisualExplosion(range,xpos,ypos,gear1,gear2)
	local degr=0
	local lap=30
	while(lap<range)
	do
		while(degr < 6.2831)
		do
			AddVisualGear(xpos+math.cos(degr+0.1)*(lap+5), ypos+math.sin(degr+0.1)*(lap+5), gear1, 0, false)
			if(gear2~=false)
			then
				AddVisualGear(xpos+math.cos(degr)*lap, ypos+math.sin(degr)*lap, gear2, 0, false)
			end
			degr=degr+((3.1415*3)*0.125) --1/8 = 0.125
		end
		lap=lap+30
		degr=degr-6.2831
	end
end

--give one random weapon
function GetRandomWeapon(hog, weptype, power, onlyonewep, getdelayedweps, mypower)

	local wepout=nil
	local rand_weaponset_power=mypower

	if(rand_weaponset_power < power)
	then
		local numberofweapons=table.maxn(weptype)

		local random_weapon = math.abs(GetRandom(numberofweapons)+1)

		while((weptype[random_weapon][4]>TotalRounds and getdelayedweps==false) or rand_weaponset_power+weptype[random_weapon][6]>power
				or (wepNotValidBorder(weptype[random_weapon][1])==false) or GetAmmoCount(hog,weptype[random_weapon][1])>=100
				or (GetAmmoCount(hog,weptype[random_weapon][1])>=1 and onlyonewep==true))
		do
			if(random_weapon>=numberofweapons)
			then
				random_weapon=0
			end
			random_weapon = random_weapon+1
		end

		wepout=weptype[random_weapon][1]

		ValidateWeapon(hog, wepout,1)
		rand_weaponset_power=mypower+weptype[random_weapon][6]
	end

	return rand_weaponset_power , wepout
end

--zealandia (generates weapons from the weaponinfo above) and sundaland
function RandomContinentsGetWeapons(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		local currCont=GLOBAL_TEAM_CONTINENT[GetHogTeamName(hog)]

		if(currCont~=0)
		then
			local checkDefCont=GLOBAL_CONTINENT_INFORMATION[currCont][4][2]

			--for sunda
			local wepamount=getTeamValue(GetHogTeamName(hog), "sundaland-count")

			if(checkDefCont==9 and getTeamValue(GetHogTeamName(hog), "rand-done-turn")==false)
			then
				CleanWeapons(hog)

				local rand_weaponset_power = 0
				local currwep

				rand_weaponset_power, currwep=GetRandomWeapon(hog,GLOBAL_WEAPONS_DAMAGE,100,true,false,rand_weaponset_power)
				rand_weaponset_power, currwep=GetRandomWeapon(hog,GLOBAL_WEAPONS_SUPPORT,2,true,false,rand_weaponset_power)
				rand_weaponset_power, currwep=GetRandomWeapon(hog,GLOBAL_WEAPONS_DAMAGE,1,true,false,rand_weaponset_power)

				setTeamValue(GetHogTeamName(hog), "rand-done-turn", true)

			elseif(checkDefCont==10 and wepamount~=nil)
			then
				local loci=0

				while(loci<wepamount)
				do
					--6 random weapons
					GetRandomWeapon(hog,GLOBAL_WEAPONS_DAMAGE,100,false,true,0)
					GetRandomWeapon(hog,GLOBAL_WEAPONS_DAMAGE,100,false,true,0)
					GetRandomWeapon(hog,GLOBAL_WEAPONS_DAMAGE,2,false,true,1)

					GetRandomWeapon(hog,GLOBAL_WEAPONS_SUPPORT,100,false,true,0)
					GetRandomWeapon(hog,GLOBAL_WEAPONS_SUPPORT,100,false,true,0)
					GetRandomWeapon(hog,GLOBAL_WEAPONS_SUPPORT,100,false,true,0)

					loci=loci+1
				end

				setTeamValue(GetHogTeamName(hog), "sundaland-count",nil)
			end
		end
	end
end

--this will take that hogs settings for the weapons and add them
function SetContinentWeapons()

	CleanWeapons(CurrentHedgehog)
	LoadWeaponset(CurrentHedgehog,GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)])

	visualstuff=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-5, vgtDust,0, false)
	v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 = GetVisualGearValues(visualstuff)
	SetVisualGearValues(visualstuff, v1, v2, v3, v4, v5, v6, v7, 2, v9, GetClanColor(GetHogClan(CurrentHedgehog)))

	ShowContinentInfo(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)],3000,false)
end

--count hogs in team
function CountHogsInTeam(hog)
	if(GetHogTeamName(hog)==GetHogTeamName(CurrentHedgehog))
	then
		GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+1
	end
end

--==========================run throw all hog/gear weapons ==========================

function SetHogHealth(hog)
	if(GetGearType(hog) == gtHedgehog and GetHogClan(hog) == GetHogClan(CurrentHedgehog))
	then
		SetHealth(hog, div(GLOBAL_TEMP_VALUE*GLOBAL_HOG_HEALTH,100))
	end
end

--will check if the mine is nicely placed
function AustraliaSpecialCheckHogs(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 40, false)==true and hog ~= CurrentHedgehog)
		then
			GLOBAL_TEMP_VALUE=1
		end
	end
end

--african special on sedunction
function AfricaSpecialSeduction(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		local dmg=div((15+GLOBAL_SEDUCTION_INCREASER)*GLOBAL_EXTRA_DAMAGE_IS_ON,100)
		if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 250, false)==true and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
		then
			if(GetHealth(hog) > dmg)
			then
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(dmg*GLOBAL_VAMPIRIC_IS_ON,100)
				SetHealth(hog, GetHealth(hog)-dmg)
			else
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(GetHealth(hog)*GLOBAL_VAMPIRIC_IS_ON,100)
				SetHealth(hog, 0)
			end
			ShowDamageTag(hog,dmg)
		end
	end
end

--kerguelen special on structure
function KerguelenSpecialRed(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 120, false)==true and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
		then
			local dmg=div((15+div(GetHealth(CurrentHedgehog)*10,100))*GLOBAL_EXTRA_DAMAGE_IS_ON,100)

			if(GetHealth(hog)>dmg)
			then
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(dmg*2,3)+div(dmg*GLOBAL_VAMPIRIC_IS_ON*2,100*3)
				SetHealth(hog, GetHealth(hog)-dmg)
			else
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+(div(GetHealth(hog)*75,100))+(div(GetHealth(CurrentHedgehog)*10,100))+div((GetHealth(hog)+div(GetHealth(CurrentHedgehog)*10,100))*GLOBAL_VAMPIRIC_IS_ON,100)
				SetHealth(hog, 0)
			end
			ShowDamageTag(hog,dmg)
			AddVisualGear(GetX(hog), GetY(hog), vgtExplosion, 0, false)
			AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
		end
	end
end

--will count the hogs, used to get one random hog.
function KerguelenSpecialYellowCountHogs(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 390, false))
		then
			GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+1
		end
	end
end
--kerguelen special swap hog
function KerguelenSpecialYellowSwap(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(GLOBAL_KERGUELEN_SPECIAL ~= -1 and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 420, false))
		then
			if(GLOBAL_TEMP_VALUE==0)
			then
				local thisX=GetX(CurrentHedgehog)
				local thisY=GetY(CurrentHedgehog)
				SetGearPosition(CurrentHedgehog, GetX(hog), GetY(hog))
				SetGearPosition(hog, thisX, thisY)
				GLOBAL_KERGUELEN_SPECIAL=-1
			else
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE-1
			end
		end
	end
end

--kerguelen special will apply sabotage
function KerguelenSpecialGreen(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(CurrentHedgehog~=hog and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 80, false))
		then
			GLOBAL_TEMP_VALUE=1
			GLOBAL_SABOTAGE_HOGS[hog]=1
			AddGear(GetX(hog), GetY(hog), gtCluster, 0, 0, 0, 1)
			PlaySound(sndNooo,hog)
		end
	end
end

--first part on kerguelen special (lonely cries)
function KerguelenSpecialBlueCheck(hog)
	if(GetGearType(hog) == gtHedgehog and hog ~= CurrentHedgehog and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 500, false))
	then
		GLOBAL_TEMP_VALUE=1
	end
end

--second part on kerguelen special (lonely cries)
function KerguelenSpecialBlueActivate(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		local dmg=div(6*GLOBAL_EXTRA_DAMAGE_IS_ON,100)
		if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
		then
			if(GetHealth(hog) > dmg)
			then
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(dmg*GLOBAL_VAMPIRIC_IS_ON,100)
				SetHealth(hog, GetHealth(hog)-dmg)
			else
				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(GetHealth(hog)*GLOBAL_VAMPIRIC_IS_ON,100)
				SetHealth(hog, 0)
			end
			ShowDamageTag(hog,dmg)

			AddVisualGear(GetX(hog), GetY(hog)-30, vgtEvilTrace, 0, false)
		end
	end
end

--south american special (used fire gear)
function SouthAmericaSpecialCheeseExplosion(hog)
	if(GetGearType(hog) == gtHedgehog or GetGearType(hog) == gtMine or GetGearType(hog) == gtExplosives)
	then
		local power_radius_outer=230
		local power_sa=700000
		local hypo=0
		if(gearIsInCircle(hog,GetX(GLOBAL_TEMP_VALUE), GetY(GLOBAL_TEMP_VALUE), power_radius_outer, false))
		then
			if(hog == CurrentHedgehog)
			then
				SetState(CurrentHedgehog, gstMoving)
			end
			SetGearPosition(hog, GetX(hog),GetY(hog)-3)
			hypo=Norm(math.abs(GetX(hog)-GetX(GLOBAL_TEMP_VALUE)),math.abs(GetY(hog)-GetY(GLOBAL_TEMP_VALUE)))
			SetGearVelocity(hog, div((power_radius_outer-hypo)*power_sa*GetIfNegative(GetX(hog)-GetX(GLOBAL_TEMP_VALUE)),power_radius_outer), div((power_radius_outer-hypo)*power_sa*GetIfNegative(GetY(hog)-GetY(GLOBAL_TEMP_VALUE)),power_radius_outer))
		end
	end
end

--north american special on sniper
function NorthAmericaSpecialSniper(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(gearIsInCircle(GLOBAL_TEMP_VALUE,GetX(hog), GetY(hog), 20, false))
		then
			SetEffect(hog, hePoisoned, 5)
			PlaySound(sndBump)
		end
	end
end

--european special on molotov (used fire gear)
function EuropeSpecialMolotovHit(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		if(gearIsInCircle(GLOBAL_TEMP_VALUE,GetX(hog), GetY(hog), 100, false))
		then
			local healthadd=15
			HealHog(hog, healthadd+(div(healthadd*GLOBAL_VAMPIRIC_IS_ON,100)), hog == CurrentHedgehog)
			SetEffect(hog, hePoisoned, false)
			GLOBAL_SABOTAGE_HOGS[hog]=0
		end
	end
end

--a weaponset string to something readable by the script
function transferableParamToWeaponSet(string,icon)
	local continentinfo={}
	local numb=0
	local wepcodes=0
	local where=0

	local x=0
	local i=1

	--default icon
	continentinfo[4]={}
	if(icon==1000)
	then
		local mid=table.maxn(GLOBAL_WEAPONS_DAMAGE)
		local max=mid+table.maxn(GLOBAL_WEAPONS_SUPPORT)
		local ic=(string.byte(string) % max)+1

		if(ic>mid)
		then
			ic=GLOBAL_WEAPONS_SUPPORT[ic-mid][1]
		else
			ic=GLOBAL_WEAPONS_DAMAGE[ic][1]
		end

		continentinfo[4][1]=ic
		continentinfo[4][2]=-ic
	else
		continentinfo[4][1]=icon
		continentinfo[4][2]=-icon
	end

	continentinfo[6]={sndFrozenHogImpact,sndUhOh}
	continentinfo[7]=100

	for c in string:gmatch"."
	do
		--first part, eg name of the weaponset
		if(where==0)
		then
			if(string.byte(c)==126)
			then
				continentinfo[1]=string.sub(string,0,numb)
				wepcodes=numb
				where=1
			end
		--second part, subname of the weaponset
		elseif(where==1)
		then
			if(string.byte(c)==126)
			then
				continentinfo[2]=string.sub(string,wepcodes+2,numb)
				continentinfo[5]={}
				wepcodes=numb
				where=2
			end
		--insert all weapons
		elseif(where==2)
		then
			x=string.byte(c)-35
			if(x>90)
			then
				break
			elseif(x>80)
			then
				if(x-80<10)
				then
					i=x-80
				else
					i=100
				end
			else
				table.insert(continentinfo[5],{x,i})
			end
		end
		numb=numb+1
	end

	if(continentinfo[5]~=nil and continentinfo[5][1]~=nil)
	then
		continentinfo[3]="- "..continentinfo[1]..loc(" was extracted from the scheme|- This continent will be able to use the specials from the other continents!")

		table.insert(GLOBAL_CONTINENT_INFORMATION, continentinfo)
	end

	return nil
end

--add a weaponset from a hogname
function HogNameToWeaponset(hog)
	if(GetGearType(hog) == gtHedgehog)
	then
		local string=GetHogName(hog)
		local numb=0

		for c in string:gmatch"."
		do
			if(string.byte(c)==126)
			then
				local name=string.sub(string,0,numb)
				SetHogName(hog,name)
				local weaponcode=string.sub(string,numb+2)
				local continentinfo=transferableParamToWeaponSet(weaponcode,1000)

				if(continentinfo~=nil)
				then
					table.insert(GLOBAL_CONTINENT_INFORMATION, continentinfo)
				end
				return
			end
			numb=numb+1
		end
	end
end

--============================================================================

--Parameters -> [options],[global-continent]
--wt=yes			allow to search for weaponsets on hog names
--spec=off		disable specials (will make stuff unbalanced)
--cont=no		remove the pre-defined continents

--for custom made continent, follows the same standards as the globalism one. You can make your continent with <Name>~<Information>~<Weapons>. Take the weapons generated from globalism, if you want a GUI :P
--weapons=<ammo><types>, ammo = ascii[116(1 ammo) to 125(inf ammo)] types = ascii[36(Grenade), 37(Clusterbomb) to 90(knife)] see http://hedgewars.org/kb/AmmoTypes
--ex "Own continent~this continent rocks!~tZ}$" will get 1 knife and inf grenades
function onParameters()

	local searchfor="wt=yes"
	local match=string.find(ScriptParam,searchfor, 1)

	if(match~=nil)
	then
		GLOBAL_TEMP_VALUE=1

		ScriptParam=string.gsub(ScriptParam,"(,?)"..searchfor.."(,?)","")
	end

	searchfor="spec=off"
	match=string.find(ScriptParam,searchfor, 1)

	if(match~=nil)
	then
		OPTION_NO_SPECIALS=true

		ScriptParam=string.gsub(ScriptParam,"(,?)"..searchfor.."(,?)","")
	end

	searchfor="cont=no"
	match=string.find(ScriptParam,searchfor, 1)

	if(match~=nil)
	then
		GLOBAL_CONTINENT_INFORMATION={}

		ScriptParam=string.gsub(ScriptParam,"(,?)"..searchfor.."(,?)","")
	end

	if(ScriptParam~=nil)
	then
		local continentinfo=transferableParamToWeaponSet(ScriptParam,amLowGravity)

		if(continentinfo~=nil)
		then
			table.insert(GLOBAL_CONTINENT_INFORMATION, continentinfo)
		end
	end
end

--set each weapons settings
function onAmmoStoreInit()

	SetAmmo(amSkip, 9, 0, 0, 0)

	for v,w in pairs(GLOBAL_WEAPONS_DAMAGE)
	do
		SetAmmo(w[1], w[2], w[3], w[4], w[5])
	end

	for v,w in pairs(GLOBAL_WEAPONS_SUPPORT)
	do
		SetAmmo(w[1], w[2], w[3], w[4], w[5])
	end
end

--on game start
function onGameStart()
	ShowMission(loc("Continental supplies"),loc("Let a continent provide your weapons!"),GLOBAL_GENERAL_INFORMATION, -amLowGravity, 0)

	local specText="| |"..loc("Additional feautures for this weapon: (Switch/Tab)").."|"

	SetAmmoDescriptionAppendix(amSniperRifle,specText..GLOBAL_SNIPER_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amBaseballBat,specText..GLOBAL_BASEBALLBAT_BOOMERANG_INFO .. "|" .. GLOBAL_BASEBALLBAT_CRICKET_INFO)
	SetAmmoDescriptionAppendix(amGasBomb,specText..GLOBAL_CHEESE_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amSeduction,specText..GLOBAL_SEDUCTION_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amInvulnerable,specText..GLOBAL_INVULNERABLE_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amParachute,specText..GLOBAL_PARACHUTE_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amHammer,specText..GLOBAL_HAMMER_ROAR_INFO .. "|" .. GLOBAL_HAMMER_SWAP_INFO .. "|" .. GLOBAL_HAMMER_LONELY_INFO .. "|" .. GLOBAL_HAMMER_SABOTAGE_INFO)
	SetAmmoDescriptionAppendix(amSMine,specText..GLOBAL_STICKY_PROJECTILE_INFO .. "|" .. GLOBAL_STICKY_NAPALM_INFO)
	SetAmmoDescriptionAppendix(amShotgun,specText..GLOBAL_SHOTGUN_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amMolotov,specText..GLOBAL_MOLOTOV_SPECIAL_INFO)
	SetAmmoDescriptionAppendix(amPickHammer,specText..GLOBAL_PICKHAMMER_SPECIAL_INFO)

	if(GLOBAL_TEMP_VALUE==1)
	then
		runOnGears(HogNameToWeaponset)
	end
end

function onGameInit()
	SuddenDeathTurns= SuddenDeathTurns+1
end

--what happen when a turn starts
function onNewTurn()

	--will refresh the info on each tab weapon
	GLOBAL_AUSTRALIAN_SPECIAL=0
	GLOBAL_AFRICAN_SPECIAL_SEDUCTION=0
	GLOBAL_SEDUCTION_INCREASER=0
	GLOBAL_SOUTH_AMERICAN_SPECIAL=false
	GLOBAL_AFRICAN_SPECIAL_STICKY=0
	GLOBAL_KERGUELEN_SPECIAL=1
	GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER=1
	GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN=false
	GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON=false
	GLOBAL_EUROPE_SPECIAL=0
	GLOBAL_VAMPIRIC_IS_ON=0
	GLOBAL_EXTRA_DAMAGE_IS_ON=100
	GLOBAL_CRATE_TEST=-1
	GLOBAL_SABOTAGE_COUNTER=0
	GLOBAL_ANTARCTICA_SPECIAL=0

	GLOBAL_TEMP_VALUE=0

	GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME=GetHogTeamName(CurrentHedgehog)

	--when all hogs are "placed"
	if(GetCurAmmoType()~=amTeleport)
	then
		--will run once when the game really starts (after placing hogs and so on
		if(GLOBAL_INIT_TEAMS[GetHogTeamName(CurrentHedgehog)] == nil)
		then
			SetInputMask(band(0xFFFFFFFF,gmWeapon))

			if(GLOBAL_START_TIME==0)
			then
				GLOBAL_START_TIME=TurnTimeLeft
				GLOBAL_HOG_HEALTH=GetHealth(CurrentHedgehog)
			end

			TurnTimeLeft=100000

			AddCaption(GLOBAL_SELECT_WEP_INFORMATION, GetClanColor(GetHogClan(CurrentHedgehog)), capgrpMessage)
			ShowMission(loc("Continental supplies"),loc("Let a continent provide your weapons!"),GLOBAL_GENERAL_INFORMATION, -amLowGravity, 0)
			HideMission()

			InitWeaponsMenu(CurrentHedgehog)
			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=0
			GLOBAL_SELECT_CONTINENT_CHECK=true
			GLOBAL_INIT_TEAMS[GetHogTeamName(CurrentHedgehog)] = 2

--			if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
--			then
--				GLOBAL_SABOTAGE_COUNTER=-750
--			end
		else
			--if its not the initialization turn
			GLOBAL_SELECT_CONTINENT_CHECK=false
			SetInputMask(0xFFFFFFFF)

			if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
			then
				GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(GLOBAL_CONTINENT_INFORMATION))+1
				SetContinentWeapons()
			end
			local currCont=GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]
			local checkDefCont=GLOBAL_CONTINENT_INFORMATION[currCont][4][2]

			--give zeelandia-teams new weapons so they can plan for the next turn
			runOnGears(RandomContinentsGetWeapons)

			--some specials for some continents (GLOBAL_TEMP_VALUE is from get random weapons)
			if(checkDefCont==9)
			then
				setTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn", false)
			elseif(checkDefCont==7)
			then
				--this will be set on the second turn
				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick")==nil)
				then
					setTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick", 1)
				end

				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick")>=4)
				then
					AddAmmo(CurrentHedgehog,amPortalGun)
					AddAmmo(CurrentHedgehog,amSineGun)
					AddAmmo(CurrentHedgehog,amSineGun)
					AddAmmo(CurrentHedgehog,amGirder)
					AddAmmo(CurrentHedgehog,amSnowball)
					setTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick", 0)
				end
				setTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick", getTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick")+1)

			elseif(checkDefCont==5)
			then
				--this will be set on the second turn
				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick")==nil)
				then
					setTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick", 1)
				end

				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick")>=2)
				then
					AddAmmo(CurrentHedgehog,amParachute)
					setTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick", 0)
				end
				setTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick", getTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick")+1)
			elseif(checkDefCont==1)
			then
				GLOBAL_TEMP_VALUE=0
				runOnGears(CountHogsInTeam)

				if(GLOBAL_TEMP_VALUE>1)
				then
					AddAmmo(CurrentHedgehog,amSwitch,GetAmmoCount(CurrentHedgehog, amSwitch)+1)

					SetWeapon(amSwitch)
					GLOBAL_TEMP_VALUE=87
				end
			end

			ShowContinentInfo(currCont,-1,true)
		end
	end
end

--what happens when you press "tab" (common button)
function onSwitch()

	if(GLOBAL_SWITCH_HOG_IS_ON==false)
	then
		if(OPTION_NO_SPECIALS==false and GLOBAL_SELECT_CONTINENT_CHECK==false)
		then
			--place mine (australia)
			if(GetCurAmmoType() == amBaseballBat)
			then
				if(GLOBAL_AUSTRALIAN_SPECIAL==0)
				then
					GLOBAL_AUSTRALIAN_SPECIAL = 1
					AddCaption(GLOBAL_BASEBALLBAT_CRICKET_INFO)
				elseif(GLOBAL_AUSTRALIAN_SPECIAL==1)
				then
					GLOBAL_AUSTRALIAN_SPECIAL = 2
					AddCaption(GLOBAL_BASEBALLBAT_BOOMERANG_INFO)
				else
					GLOBAL_AUSTRALIAN_SPECIAL = 0
					AddCaption(loc("DEFAULT"))
				end

			--Asian special
			elseif(GLOBAL_PARACHUTE_IS_ON==1)
			then
				asiabomb=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+3, gtSnowball, 0, 0, 0, 0)
				SetGearMessage(asiabomb, 1)

				GLOBAL_PARACHUTE_IS_ON=2
				GLOBAL_SELECT_CONTINENT_CHECK=false

			--africa
			elseif(GetCurAmmoType() == amSeduction)
			then
				if(GLOBAL_AFRICAN_SPECIAL_SEDUCTION==0)
				then
					GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 1

					AddCaption(string.format(GLOBAL_SEDUCTION_SPECIAL_INFO,GLOBAL_SEDUCTION_INCREASER))
				else
					GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 0
					AddCaption(loc("DEFAULT"))
				end

			--south america
			elseif(GetCurAmmoType() == amGasBomb)
			then
				if(GLOBAL_SOUTH_AMERICAN_SPECIAL==false)
				then
					GLOBAL_SOUTH_AMERICAN_SPECIAL = true
					AddCaption(GLOBAL_CHEESE_SPECIAL_INFO)
				else
					GLOBAL_SOUTH_AMERICAN_SPECIAL = false
					AddCaption(loc("DEFAULT"))
				end

			--africa
			elseif(GetCurAmmoType() == amSMine)
			then
				if(GLOBAL_AFRICAN_SPECIAL_STICKY==0)
				then
					GLOBAL_AFRICAN_SPECIAL_STICKY = 1
					AddCaption(GLOBAL_STICKY_PROJECTILE_INFO)
				elseif(GLOBAL_AFRICAN_SPECIAL_STICKY == 1)
				then
					GLOBAL_AFRICAN_SPECIAL_STICKY = 2
					AddCaption(GLOBAL_STICKY_NAPALM_INFO)
				elseif(GLOBAL_AFRICAN_SPECIAL_STICKY == 2)
				then
					GLOBAL_AFRICAN_SPECIAL_STICKY = 0
					AddCaption(loc("DEFAULT"))
				end

			--north america (sniper)
			elseif(GetCurAmmoType() == amSniperRifle and GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON==false)
			then
				if(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER==2)
				then
					GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER = 1
					AddCaption(loc("DEFAULT"))
				elseif(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER==1)
				then
					GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER = 2
					AddCaption(GLOBAL_SNIPER_SPECIAL_INFO)
				end

			--north america (shotgun)
			elseif(GetCurAmmoType() == amShotgun)
			then
				if(GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN==false)
				then
					GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN = true
					AddCaption(GLOBAL_SHOTGUN_SPECIAL_INFO)
				else
					GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN = false
					AddCaption(loc("DEFAULT"))
				end

			--europe
			elseif(GetCurAmmoType() == amMolotov)
			then
				if(GLOBAL_EUROPE_SPECIAL==0)
				then
					GLOBAL_EUROPE_SPECIAL = 1
					AddCaption(GLOBAL_MOLOTOV_SPECIAL_INFO)
				else
					GLOBAL_EUROPE_SPECIAL = 0
					AddCaption(loc("DEFAULT"))
				end

			--antarctica
			elseif(GetCurAmmoType() == amPickHammer)
			then
				if(GLOBAL_ANTARCTICA_SPECIAL==0)
				then
					GLOBAL_ANTARCTICA_SPECIAL = 1
					AddCaption(GLOBAL_PICKHAMMER_SPECIAL_INFO)
				else
					GLOBAL_ANTARCTICA_SPECIAL = 0
					AddCaption(loc("DEFAULT"))
				end

			--kerguelen
			elseif(GetCurAmmoType() == amHammer)
			then
				if(GLOBAL_KERGUELEN_SPECIAL==6)
				then
					GLOBAL_KERGUELEN_SPECIAL = 1
					AddCaption("DEFAULT")
				elseif(GLOBAL_KERGUELEN_SPECIAL==1)
				then
					GLOBAL_KERGUELEN_SPECIAL = 2
					AddCaption("#"..GLOBAL_HAMMER_ROAR_INFO)
				elseif(GLOBAL_KERGUELEN_SPECIAL==2)
				then
					GLOBAL_KERGUELEN_SPECIAL = 3
					AddCaption("##"..GLOBAL_HAMMER_SWAP_INFO)
				elseif(GLOBAL_KERGUELEN_SPECIAL==3)
				then
					GLOBAL_KERGUELEN_SPECIAL = 5
					AddCaption("###"..GLOBAL_HAMMER_LONELY_INFO)
				elseif(GLOBAL_KERGUELEN_SPECIAL==5)
				then
					GLOBAL_KERGUELEN_SPECIAL = 6
					AddCaption("####"..GLOBAL_HAMMER_SABOTAGE_INFO)
				end
			end
		end
		--for selecting weaponset, this is mostly for old players.
		if(GetHogLevel(CurrentHedgehog)==0 and GLOBAL_SELECT_CONTINENT_CHECK==true and (GetCurAmmoType() == amSkip or GetCurAmmoType() == amNothing))
		then
			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]+1

			if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]> table.maxn(GLOBAL_CONTINENT_INFORMATION))
			then
				GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=1
			end
			SetContinentWeapons()
		end
	--if switching out from sabotage.
	elseif(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]~=nil and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==2)
	then
		GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=1
	end
end

function onUp()
	--swap forward in the weaponmenu (1.0 style)
	if(GetHogLevel(CurrentHedgehog)==0 and GLOBAL_SELECT_CONTINENT_CHECK==true and (GetCurAmmoType() == amSkip or GetCurAmmoType() == amNothing))
	then
		GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]+1

		if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]> table.maxn(GLOBAL_CONTINENT_INFORMATION))
		then
			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=1
		end
		SetContinentWeapons()
	end

	if(GetCurAmmoType() == amSeduction and GLOBAL_AFRICAN_SPECIAL_SEDUCTION == 1 and GetAmmoCount(CurrentHedgehog,amInvulnerable)>0)
	then
		GLOBAL_SEDUCTION_INCREASER=GLOBAL_SEDUCTION_INCREASER+7

		RemoveWeapon(CurrentHedgehog,amInvulnerable)

		AddCaption(string.format(GLOBAL_INVULNERABLE_SPECIAL_INFO," ("..(GLOBAL_SEDUCTION_INCREASER+15)..")"," ("..GetAmmoCount(CurrentHedgehog,amInvulnerable)..")"))
	end
end

function onDown()
	--swap backwards in the weaponmenu (1.0 style)
	if(GetHogLevel(CurrentHedgehog)==0 and GLOBAL_SELECT_CONTINENT_CHECK==true and (GetCurAmmoType() == amSkip or GetCurAmmoType() == amNothing))
	then
		GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]-1

		if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]<=0)
		then
			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=table.maxn(GLOBAL_CONTINENT_INFORMATION)
		end
		SetContinentWeapons()
	end

	if(GetCurAmmoType() == amSeduction and GLOBAL_AFRICAN_SPECIAL_SEDUCTION == 1 and GLOBAL_SEDUCTION_INCREASER>0)
	then
		GLOBAL_SEDUCTION_INCREASER=GLOBAL_SEDUCTION_INCREASER-7

		AddAmmo(CurrentHedgehog,amInvulnerable,GetAmmoCount(CurrentHedgehog, amInvulnerable)+1)

		AddCaption(string.format(GLOBAL_INVULNERABLE_SPECIAL_INFO," ("..(GLOBAL_SEDUCTION_INCREASER+15)..")"," ("..GetAmmoCount(CurrentHedgehog,amInvulnerable)..")"))
	end
end

function onGameTick20()
	--if you picked a weaponset from the weaponmenu (icon)
	if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
	then
		if(GetCurAmmoType()==amSwitch)
		then
			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(GLOBAL_CONTINENT_INFORMATION))+1
			SetContinentWeapons()
			PlaySound(sndMineTick)
		else
			for v,w in pairs(GLOBAL_CONTINENT_INFORMATION)
			do
				if(GetCurAmmoType()==GLOBAL_CONTINENT_INFORMATION[v][4][1])
				then
					GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=v
					SetContinentWeapons()
					PlaySound(GLOBAL_CONTINENT_INFORMATION[v][6][1])
					PlaySound(GLOBAL_CONTINENT_INFORMATION[v][6][2],CurrentHedgehog)
				end
			end
		end
	end

	--show the kerguelen ring
	if(GLOBAL_KERGUELEN_SPECIAL > 1 and GetCurAmmoType() == amHammer)
	then
		if(GLOBAL_VISUAL_CIRCLE==nil)
		then
			GLOBAL_VISUAL_CIRCLE=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 0, true)
		end

		if(GLOBAL_KERGUELEN_SPECIAL == 2) --walrus scream
		then
			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 120, 4, 0xff0000ee)
		elseif(GLOBAL_KERGUELEN_SPECIAL == 3) --swap hog
		then
			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 390, 3, 0xffff00ee)
		elseif(GLOBAL_KERGUELEN_SPECIAL == 5) --cries
		then

			GLOBAL_TEMP_VALUE=0
			runOnGears(KerguelenSpecialBlueCheck)
			if(GLOBAL_TEMP_VALUE==0)
			then
				SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 500, 1, 0x0000ffee)
			else
				SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 500, 10, 0x0000ffee)
			end

		elseif(GLOBAL_KERGUELEN_SPECIAL == 6) --sabotage
		then
			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 80, 10, 0x00ff00ee)
		end

	elseif(GLOBAL_VISUAL_CIRCLE~=nil)
	then
		DeleteVisualGear(GLOBAL_VISUAL_CIRCLE)
		GLOBAL_VISUAL_CIRCLE=nil
	end

	--sabotage
	if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]~=nil and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]>=1)
	then
		--for sabotage
		if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
		then
			AddCaption(loc("You are sabotaged, RUN!"))

			PlaySound(sndHellish)
			--update the constant at the top also to something in between
			GLOBAL_SABOTAGE_FREQUENCY=100
			SetGravity(350)

			GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=2
		end

		if(GLOBAL_SABOTAGE_COUNTER % 20 == 0)
		then
			AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
		end

		if(TurnTimeLeft<(GetAwayTime*10) or band(GetState(CurrentHedgehog),gstAttacked)==1)
		then
			GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=0
		elseif(GLOBAL_SABOTAGE_COUNTER >= GLOBAL_SABOTAGE_FREQUENCY)
		then

			if(GetHealth(CurrentHedgehog)<=2)
			then
				SetHealth(CurrentHedgehog, 0)
				GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=0
			else
				SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)-2)
			end
			ShowDamageTag(CurrentHedgehog,2)

			GLOBAL_SABOTAGE_COUNTER=0
		else
			GLOBAL_SABOTAGE_COUNTER=GLOBAL_SABOTAGE_COUNTER+1
		end
	elseif(GetGravity()==350 and (GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==0 or GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==nil))
	then
		SetGravity(100)
	end

	--enable switch (north america)
	if(GetCurAmmoType() == amSwitch and GLOBAL_TEMP_VALUE==87)
	then
		SetGearMessage(CurrentHedgehog,gmAttack)
		GLOBAL_TEMP_VALUE=0
	end
end

--some ppl complained :P
function onSlot(slot)
	if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
	then
		SetWeapon(amSkip)
	end
end

--if you used hogswitch or any similar weapon, dont enable any weaponchange
function onAttack()
	if(GLOBAL_SELECT_CONTINENT_CHECK==true)
	then
		if(GetCurAmmoType() == amSkip or GetCurAmmoType() == amNothing)
		then
			GLOBAL_SELECT_CONTINENT_CHECK=false
			EndTurn(0)
		else
			SetWeapon(amSkip)
		end
	end

	--african special
	if(GLOBAL_AFRICAN_SPECIAL_SEDUCTION == 1 and GetCurAmmoType() == amSeduction and band(GetState(CurrentHedgehog),gstAttacked)==0)
	then
		EndTurn(3)

		GLOBAL_TEMP_VALUE=0
		runOnGears(AfricaSpecialSeduction)
		SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+GLOBAL_TEMP_VALUE)

		--visual stuff
		VisualExplosion(250,GetX(CurrentHedgehog), GetY(CurrentHedgehog),vgtSmoke,vgtSmokeWhite)
		PlaySound(sndParachute)

		RemoveWeapon(CurrentHedgehog,amSeduction)

	elseif(GLOBAL_ANTARCTICA_SPECIAL == 1 and GetCurAmmoType() == amPickHammer and band(GetState(CurrentHedgehog),gstAttacked)==0)
	then
		EndTurn(10)
		SetGearPosition(CurrentHedgehog,GetX(CurrentHedgehog),0)
		ParseCommand("hjump")
		SetGearVelocity(CurrentHedgehog, 0, 100000000)

		PlaySound(sndPiano8)

		RemoveWeapon(CurrentHedgehog,amPickHammer)

	--Kerguelen specials
	elseif(GetCurAmmoType() == amHammer and GLOBAL_KERGUELEN_SPECIAL > 1 and band(GetState(CurrentHedgehog),gstAttacked)==0)
	then
		local escapetime=3

		--scream
		if(GLOBAL_KERGUELEN_SPECIAL == 2)
		then
			GLOBAL_TEMP_VALUE=0
			runOnGears(KerguelenSpecialRed)
			HealHog(CurrentHedgehog, GLOBAL_TEMP_VALUE)
			PlaySound(sndHellish)

		--swap
		elseif(GLOBAL_KERGUELEN_SPECIAL == 3)
		then
			GLOBAL_TEMP_VALUE=0
			runOnGears(KerguelenSpecialYellowCountHogs)
			if(GLOBAL_TEMP_VALUE>0)
			then
				GLOBAL_TEMP_VALUE=GetRandom(GLOBAL_TEMP_VALUE)
				runOnGears(KerguelenSpecialYellowSwap)
				PlaySound(sndPiano3)
			else
				PlaySound(sndPiano6)
			end

		--cries
		elseif(GLOBAL_KERGUELEN_SPECIAL == 5)
		then
			GLOBAL_TEMP_VALUE=0
			runOnGears(KerguelenSpecialBlueCheck)
			if(GLOBAL_TEMP_VALUE==0)
			then
				AddGear(0, 0, gtWaterUp, 0, 0,0,0)
				PlaySound(sndWarp)
				PlaySound(sndMolotov)

				runOnGears(KerguelenSpecialBlueActivate)
				SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+GLOBAL_TEMP_VALUE)
			else
				HogSay(CurrentHedgehog, loc("Hogs in sight!"), SAY_SAY)
			end

		--sabotage
		elseif(GLOBAL_KERGUELEN_SPECIAL == 6)
		then
			GLOBAL_TEMP_VALUE=0
			runOnGears(KerguelenSpecialGreen)

			PlaySound(sndThrowRelease)
			AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, 0, -1000000, 32)

			if(GLOBAL_TEMP_VALUE==1)
			then
				escapetime=10
			end
		end

		EndTurn(escapetime)

		DeleteVisualGear(GLOBAL_VISUAL_CIRCLE)
		GLOBAL_VISUAL_CIRCLE=nil
		GLOBAL_KERGUELEN_SPECIAL=0

		RemoveWeapon(CurrentHedgehog,amHammer)

	elseif(GetCurAmmoType() == amVampiric)
	then
		GLOBAL_VAMPIRIC_IS_ON=75
	elseif(GetCurAmmoType() == amExtraDamage)
	then
		GLOBAL_EXTRA_DAMAGE_IS_ON=150
	end
end

function onGearAdd(gearUid)
	GLOBAL_SELECT_CONTINENT_CHECK=false

	--track the gears im using
	if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives)
	then
		trackGear(gearUid)
	end

	--remove gasclouds on gasbombspecial
	if(GetGearType(gearUid)==gtPoisonCloud and GLOBAL_SOUTH_AMERICAN_SPECIAL == true)
	then
		DeleteGear(gearUid)
	--african special
	elseif(GetGearType(gearUid)==gtSMine)
	then
		vx,vy=GetGearVelocity(gearUid)
		if(GLOBAL_AFRICAN_SPECIAL_STICKY == 1)
		then
			SetState(CurrentHedgehog, gstHHDriven+gstMoving)
			SetGearPosition(CurrentHedgehog, GetX(CurrentHedgehog),GetY(CurrentHedgehog)-3)
			SetGearVelocity(CurrentHedgehog, vx, vy)
			DeleteGear(gearUid)

		elseif(GLOBAL_AFRICAN_SPECIAL_STICKY == 2)
		then
			FireGear(CurrentHedgehog,gtNapalmBomb, vx, vy, 0)
			DeleteGear(gearUid)
		end
	--north american special
	elseif(GetGearType(gearUid)==gtSniperRifleShot)
	then
		GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON=true
		if(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER~=1)
		then
			SetHealth(gearUid, 1)
		end
	--north american special
	elseif(GetGearType(gearUid)==gtShotgunShot)
	then
		if(GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN==true)
		then
			AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false)
			AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false)
			AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false)
			PlaySound(sndBirdyLay)
		end
	--european special
	elseif(GetGearType(gearUid)==gtMolotov and GLOBAL_EUROPE_SPECIAL==1)
	then
		vx,vy=GetGearVelocity(gearUid)
		e_health=FireGear(CurrentHedgehog,gtCluster, vx, vy, 1)
		SetGearMessage(e_health, 2)
		DeleteGear(gearUid)
	--australian specials
	elseif(GetGearType(gearUid)==gtShover and GLOBAL_AUSTRALIAN_SPECIAL~=0)
	then
		GLOBAL_TEMP_VALUE=0
		runOnGears(AustraliaSpecialCheckHogs)

		if(GLOBAL_TEMP_VALUE==0)
		then
			vx,vy=GetGearVelocity(gearUid)

			if(GLOBAL_AUSTRALIAN_SPECIAL==1)
			then
				local austmine=FireGear(CurrentHedgehog,gtMine, vx, vy, 0)
				SetHealth(austmine, 100)
				SetTimer(austmine, 1000)
			else
				local austmine=FireGear(CurrentHedgehog,gtBall, vx, vy, 1)
				--SetHealth(austmine, 1)
				SetTimer(austmine, 1000)
				SetGearMessage(austmine, 3)
			end
		else
			PlaySound(sndDenied)
		end
	elseif(GetGearType(gearUid)==gtParachute)
	then
		GLOBAL_PARACHUTE_IS_ON=1
	elseif(GetGearType(gearUid)==gtSwitcher)
	then
		GLOBAL_SWITCH_HOG_IS_ON=true
	end
end

function onGearDamage(gearUid, damage)
	if (GetGearType(gearUid) == gtCase)
	then
		GLOBAL_CRATE_TEST=gearUid
	end

	if(gearUid==CurrentHedgehog and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
	then
		GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=0
	end
end

function onGearDelete(gearUid)

	if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives)
	then
		--sundaland special
		if(GetGearType(gearUid) == gtHedgehog and GLOBAL_TEAM_CONTINENT[GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME]==10)
		then
			local currvalue=getTeamValue(GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME, "sundaland-count")

			if(currvalue==nil)
			then
				currvalue=0
			end

			setTeamValue(GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME, "sundaland-count", currvalue+1)
			PlaySound(sndReinforce,CurrentHedgehog)
		end

		trackDeletion(gearUid)
	end

	--if picking up a health crate
	if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]~=0 and GetGearType(gearUid) == gtCase and GetHealth(gearUid)~=0 and gearUid~=GLOBAL_CRATE_TEST and gearIsInCircle(CurrentHedgehog,GetX(gearUid), GetY(gearUid), 50, false)==true)
	then
		GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=0
	end

	--north american lipstick
	if(GetGearType(gearUid)==gtSniperRifleShot )
	then
		GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON=false
		if(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER==2)
		then
			GLOBAL_TEMP_VALUE=gearUid
			runOnGears(NorthAmericaSpecialSniper)
		end
	--north american eagle eye
	elseif(GetGearType(gearUid)==gtShotgunShot and GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN==true)
	then
		SetGearPosition(CurrentHedgehog, GetX(gearUid), GetY(gearUid)+7)
		PlaySound(sndWarp)
	--south american special
	elseif(GetGearType(gearUid)==gtGasBomb and GLOBAL_SOUTH_AMERICAN_SPECIAL == true)
	then
		GLOBAL_TEMP_VALUE=gearUid
		runOnGears(SouthAmericaSpecialCheeseExplosion)
		AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false)

	--asian special
	elseif(GetGearType(gearUid)==gtSnowball and GetGearMessage(gearUid)==1)
	then
		AddGear(GetX(gearUid), GetY(gearUid), gtCluster, 0, 0, 0, 22)

	--europe special
	elseif(GetGearType(gearUid)==gtCluster and GetGearMessage(gearUid)==2)
	then
		GLOBAL_TEMP_VALUE=gearUid
		runOnGears(EuropeSpecialMolotovHit)
		VisualExplosion(100,GetX(gearUid), GetY(gearUid),vgtSmokeWhite,vgtSmokeWhite)
		AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false)
		PlaySound(sndGraveImpact)
	--australian special
	elseif(GetGearType(gearUid)==gtBall and GetGearMessage(gearUid)==3)
	then
		SpawnRandomCrate(GetX(gearUid), GetY(gearUid))

	--asia (using para)
	elseif(GetGearType(gearUid)==gtParachute)
	then
		GLOBAL_PARACHUTE_IS_ON=false
	elseif(GetGearType(gearUid)==gtSwitcher)
	then
		GLOBAL_SWITCH_HOG_IS_ON=false
	end
end

--[[
	sources (populations & area):
	Own calculations from wikipedia.
	Some are approximations.
]]