merge
authorunC0Rr
Tue, 26 May 2015 12:00:39 +0300
changeset 10966 a8749503c130
parent 10964 493bd837dc2e (current diff)
parent 10965 fb2b006ba476 (diff)
child 10967 1434cec96ca3
merge
--- a/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Tue May 26 11:59:46 2015 +0300
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Tue May 26 12:00:39 2015 +0300
@@ -1,41 +1,46 @@
 --[[
-Made for 0.9.21
+	version 1.3n
 
-Copyright (C) 2012 Vatten
+	The expat (MIT) license
 
-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:
+	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 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.
+	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.
 ]]
 
 HedgewarsScriptLoad("/Scripts/Locale.lua")
 HedgewarsScriptLoad("/Scripts/Utils.lua")
 HedgewarsScriptLoad("/Scripts/Tracker.lua")
 
-function int_sqrt(num)
+--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
 
-function norm(xx,yy)
+-- 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 int_sqrt((div(math.abs(xx),bitr)^2)+(div(math.abs(yy),bitr)^2))*bitr
+		return IntegerSqrt((div(math.abs(xx),bitr)^2)+(div(math.abs(yy),bitr)^2))*bitr
 	else
-		return int_sqrt((math.abs(xx)^2)+(math.abs(yy)^2))
+		return IntegerSqrt((math.abs(xx)^2)+(math.abs(yy)^2))
 	end
 end
 
-function positive(num)
+-- returns 1 or -1 depending on where it is
+function GetIfNegative(num)
 	if(num<0)
 	then
 		return -1
@@ -44,61 +49,100 @@
 	end
 end
 
+--Will end the turn + give escape time
 function EndTurn()
 	SetState(CurrentHedgehog,bor(GetState(CurrentHedgehog),gstAttacked))
 	--3 sec espace time
 	TurnTimeLeft = GetAwayTime*10*3
+ 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
 
---for sundaland
-local turnhog=0
+--This function will set the gravity on a scale from 0->100, where 50 is the standard one.
+ function SetGravityFromScale(grav)
+	if(grav>100)
+	then
+		grav=100
+	elseif(grav<0)
+	then
+		grav=0
+	end
 
-local teams_ok = {}
-local wepcode_teams={}
-local swapweps=false
+	if(grav>50)
+	then
+		SetGravity(100+((grav-50)*12))
+	else
+		SetGravity(25+grav+div(grav,2))
+	end
+ end
+
+--====MISC GLOBALS====
+
+--for selecting continent
+local GLOBAL_INIT_TEAMS = {}
+local GLOBAL_SELECT_CONTINENT_CHECK=false
+local GLOBAL_TEAM_CONTINENT = {}
 
 --variables for seeing if you have swaped around on a weapon
-local australianSpecial=false
-local africanSpecial=0
-local africaspecial2=0
-local samericanSpecial=false
-local namericanSpecial=1
-local sniper_s_in_use=false
-local kergulenSpecial=1
-local shotgun_s=false
-local europe_s=0
-local VampOn=0
+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 austmine=nil
-local inpara=false
-local asianflame=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
 
-local visualcircle=nil
+--the visual circle for kerguelen
+local GLOBAL_VISUAL_CIRCLE=nil
 
-local temp_val=0
+--the global temp value
+local GLOBAL_TEMP_VALUE=0
 
 --for sabotage
-local disallowattack=0
-local disable_moving={}
-local disableRand=0
---local disableoffsetai=0
-local onsabotageai=false
+local GLOBAL_SABOTAGE_COUNTER=0
+local GLOBAL_SABOTAGE_HOGS={}
+local GLOBAL_SABOTAGE_FREQUENCY=0
+local GLOBAL_SABOTAGE_GRAVITY_SWITCH=true
+
+--for sundaland
+local GLOBAL_SUNDALAND_END_HOG=0
 
-local continent = {}
+--====GENERAL GLOBALS (useful for handling continents)====
 
-local generalinfo="- "..loc("Per team weapons").."|- 10 "..loc("weaponschemes").."|- "..loc("Unique new weapons").."| |"..loc("Select continent first round with the Weapon Menu or by").." (["..loc("switch").."/"..loc("tab").."]="..loc("Increase")..",["..loc("presice").."/"..loc("left shift").."]="..loc("Decrease")..") "..loc("on Skip").."|"..loc("Some weapons have a second option. Find them with").." ["..loc("switch").."/"..loc("tab").."]"
+local GLOBAL_GENERAL_INFORMATION="- "..loc("Per team weapons").."|- 10 "..loc("weaponschemes").."|- "..loc("Unique new weapons").."| |"..loc("Select your continent/weaponset: with the \"Up\" or \"Down\" keys. You can also select one with the weapons menu.").."|"..loc("Note: Some weapons have a second option (See continent information). Find and use them with the \"")..loc("switch").."\" "..loc("key.").."|"..loc("Tip: See the \"esc\" key (this menu) if you want to see the currently playing teams continent, or that continents specials.")
 
-local weapontexts = {
+local GLOBAL_SHOW_SMALL_INFO=0
+
+local GLOBAL_WEAPON_TEXTS = {
 loc("Green lipstick bullet: [Poisonous, deals no damage]"),
-loc("REMOVED"),
+loc("Cluck-cluck time: [Fire an egg ~ Sabotages and cures poison ~ Cannot be fired close to another hog]"),
 loc("Anno 1032: [The explosion will make a strong push ~ Wide range, wont affect hogs close to the target]"),
 loc("Dust storm: [Deals 15 damage to all enemies in the circle]"),
-loc("Cricket time: [Drop a fireable mine! ~ Will work if fired close to your hog & far away from enemy ~ 1 sec]"),
+loc("Cricket time: [Fire away a 1 sec mine! ~ Cannot be fired close to another hog]"),
 loc("Drop a bomb: [Drop some heroic wind that will turn into a bomb on impact]"),
-loc("Penguin roar: [Deal 15 damage + 15% of your hogs health to all hogs around you and get 2/3 back]"),
+loc("Penguin roar: [Deal 15 damage + 10% of your hogs health to all hogs around you and get 2/3 back]"),
 loc("Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"),
-loc("REMOVED"),
-loc("Lonely Cries: [Rise the water if no hog is in the circle and deal 7 damage to all enemy hogs]"),
+nil,
+loc("Lonely Cries: [Rise the water if no hog is in the circle and deal 6 damage to all enemy hogs.]"),
 loc("Hedgehog projectile: [Fire your hog like a Sticky Bomb]"),
 loc("Napalm rocket: [Fire a bomb with napalm!]"),
 loc("Eagle Eye: [Blink to the impact ~ One shot]"),
@@ -106,41 +150,41 @@
 loc("Sabotage/Flare: [Sabotage all hogs in the circle and deal ~1 dmg OR Fire a cluster up into the air]")
 }
 
-local weaponsets = 
+local GLOBAL_CONTINENT_INFORMATION =
 {
-{loc("North America"),loc("Area")..": 24,709,000 km2, "..loc("Population")..": 529,000,000",loc("- Will give you an airstrike every fifth turn.").."|"..loc("Special Weapons:").."|"..loc("Shotgun")..": "..weapontexts[13].."|"..loc("Sniper Rifle")..": "..weapontexts[1],amSniperRifle,
-{{amShotgun,100},{amDEagle,100},{amLaserSight,4},{amSniperRifle,100},{amCake,1},{amAirAttack,2},{amSwitch,5}}},
+{loc("North America"),"["..loc("Difficulty: ")..loc("EASY").."] "..loc("Area")..": 24,709,000 km2, "..loc("Population")..": 529,000,000",loc("- You can switch between hogs at the start of your turns. (Not first one)").."|"..loc("Special Weapons:").."|"..loc("Shotgun")..": "..GLOBAL_WEAPON_TEXTS[13].."|"..loc("Sniper Rifle")..": "..GLOBAL_WEAPON_TEXTS[1],amSniperRifle,
+{{amShotgun,100},{amDEagle,100},{amLaserSight,2},{amSniperRifle,100},{amCake,1},{amAirAttack,2},{amSwitch,2}}},
 
-{loc("South America"),loc("Area")..": 17,840,000 km2, "..loc("Population")..": 387,000,000",loc("Special Weapons:").."|"..loc("GasBomb")..": "..weapontexts[3],amGasBomb,
-{{amBirdy,100},{amHellishBomb,1},{amBee,100},{amGasBomb,100},{amFlamethrower,100},{amNapalm,1},{amExtraDamage,3}}},
+{loc("South America"),"["..loc("Difficulty: ")..loc("MEDIUM").."] "..loc("Area")..": 17,840,000 km2, "..loc("Population")..": 387,000,000",loc("Special Weapons:").."|"..loc("GasBomb")..": "..GLOBAL_WEAPON_TEXTS[3],amGasBomb,
+{{amBirdy,100},{amHellishBomb,1},{amBee,100},{amGasBomb,100},{amFlamethrower,100},{amNapalm,1},{amExtraDamage,2}}},
 
-{loc("Europe"),loc("Area")..": 10,180,000 km2, "..loc("Population")..": 740,000,000",loc("Special Weapons:").."|"..loc("Molotov")..": "..weapontexts[14],amBazooka,
+{loc("Europe"),"["..loc("Difficulty: ")..loc("EASY").."] "..loc("Area")..": 10,180,000 km2, "..loc("Population")..": 740,000,000",loc("Special Weapons:").."|"..loc("Molotov")..": "..GLOBAL_WEAPON_TEXTS[14],amBazooka,
 {{amBazooka,100},{amGrenade,100},{amMortar,100},{amMolotov,100},{amVampiric,3},{amPiano,1},{amResurrector,2},{amJetpack,4}}},
 
-{loc("Africa"),loc("Area")..": 30,222,000 km2, "..loc("Population")..": 1,033,000,000",loc("Special Weapons:").."|"..loc("Seduction")..": "..weapontexts[4].."|"..loc("Sticky Mine")..": "..weapontexts[11].."|"..loc("Sticky Mine")..": "..weapontexts[12],amSMine,
-{{amSMine,100},{amWatermelon,1},{amDrillStrike,1},{amDrill,100},{amInvulnerable,4},{amSeduction,100},{amLandGun,2}}},
+{loc("Africa"),"["..loc("Difficulty: ")..loc("MEDIUM").."] "..loc("Area")..": 30,222,000 km2, "..loc("Population")..": 1,033,000,000",loc("Special Weapons:").."|"..loc("Seduction")..": "..GLOBAL_WEAPON_TEXTS[4].."|"..loc("Sticky Mine")..": "..GLOBAL_WEAPON_TEXTS[11].."|"..loc("Sticky Mine")..": "..GLOBAL_WEAPON_TEXTS[12],amSMine,
+{{amSMine,100},{amWatermelon,1},{amDrillStrike,1},{amDrill,100},{amInvulnerable,5},{amSeduction,100},{amLandGun,2}}},
 
-{loc("Asia"),loc("Area")..": 44,579,000 km2, "..loc("Population")..": 3,880,000,000",loc("- Will give you a parachute every second turn.").."|"..loc("Special Weapons:").."|"..loc("Parachute")..": "..weapontexts[6],amRope,
-{{amRope,100},{amFirePunch,100},{amParachute,1},{amKnife,2},{amDynamite,1}}},
+{loc("Asia"),"["..loc("Difficulty: ")..loc("MEDIUM").."] "..loc("Area")..": 44,579,000 km2, "..loc("Population")..": 3,880,000,000",loc("- Will give you a parachute every second turn.").."|"..loc("Special Weapons:").."|"..loc("Parachute")..": "..GLOBAL_WEAPON_TEXTS[6],amRope,
+{{amRope,100},{amFirePunch,100},{amParachute,2},{amKnife,2},{amDynamite,1}}},
 
-{loc("Australia"),loc("Area")..": 8,468,000 km2, "..loc("Population")..": 31,000,000",loc("Special Weapons:").."|"..loc("Baseballbat")..": "..weapontexts[5],amBaseballBat,
-{{amBaseballBat,100},{amMine,100},{amLowGravity,4},{amBlowTorch,100},{amRCPlane,2},{amTeleport,3}}},
+{loc("Australia"),"["..loc("Difficulty: ")..loc("EASY").."] "..loc("Area")..": 8,468,000 km2, "..loc("Population")..": 31,000,000",loc("Special Weapons:").."|"..loc("Baseballbat")..": "..GLOBAL_WEAPON_TEXTS[5].."|"..loc("Baseballbat")..": "..GLOBAL_WEAPON_TEXTS[2],amBaseballBat,
+{{amBaseballBat,100},{amMine,100},{amLowGravity,4},{amBlowTorch,100},{amRCPlane,2},{amTeleport,2},{amRubber,2}}},
 
-{loc("Antarctica"),loc("Area")..": 14,000,000 km2, "..loc("Population")..": ~1,000",loc("Antarctic summer: - Will give you one girder/mudball and two sineguns/portals every fourth turn."),amIceGun,
-{{amSnowball,2},{amIceGun,2},{amPickHammer,100},{amSineGun,4},{amGirder,2},{amExtraTime,2},{amPortalGun,2}}},
+{loc("Antarctica"),"["..loc("Difficulty: ")..loc("HARD").."] "..loc("Area")..": 14,000,000 km2, "..loc("Population")..": ~1,000",loc("Antarctic summer: - Will give you one girder/mudball and two sineguns/portals every fourth turn."),amIceGun,
+{{amSnowball,2},{amIceGun,2},{amPickHammer,100},{amSineGun,5},{amGirder,2},{amExtraTime,1},{amPortalGun,2}}},
 
-{loc("Kerguelen"),loc("Area")..": 1,100,000 km2, "..loc("Population")..": ~100",loc("Special Weapons:").."|"..loc("Hammer")..": "..weapontexts[7].."|"..loc("Hammer")..": "..weapontexts[8].." ("..loc("Duration")..": 2)|"..loc("Hammer")..": "..weapontexts[10].."|"..loc("Hammer")..": "..weapontexts[15],amHammer,
-{{amHammer,100},{amMineStrike,2},{amBallgun,1}}},
+{loc("Kerguelen"),"["..loc("Difficulty: ")..loc("EASY").."] "..loc("Area")..": 1,100,000 km2, "..loc("Population")..": ~100",loc("Special Weapons:").."|"..loc("Hammer")..": "..GLOBAL_WEAPON_TEXTS[7].."|"..loc("Hammer")..": "..GLOBAL_WEAPON_TEXTS[8].." ("..loc("Duration")..": 2)|"..loc("Hammer")..": "..GLOBAL_WEAPON_TEXTS[10].."|"..loc("Hammer")..": "..GLOBAL_WEAPON_TEXTS[15],amHammer,
+{{amHammer,100},{amMineStrike,1},{amBallgun,1}}},
 
-{loc("Zealandia"),loc("Area")..": 3,500,000 km2, "..loc("Population")..": 5,000,000",loc("- Will Get 1-3 random weapons") .. "|" .. loc("- Massive weapon bonus on first turn"),amInvulnerable,
+{loc("Zealandia"),"["..loc("Difficulty: ")..loc("MEDIUM").."] "..loc("Area")..": 3,500,000 km2, "..loc("Population")..": 5,000,000",loc("- Will Get 1-3 random weapons") .. "|" .. loc("- Massive weapon bonus on first turn"),amInvulnerable,
 {{amBazooka,1},{amGrenade,1},{amBlowTorch,1},{amSwitch,100},{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}}},
 
-{loc("Sundaland"),loc("Area")..": 1,850,000 km2, "..loc("Population")..": 290,000,000",loc("- You will recieve 2-4 weapons on each kill! (Even on own hogs)"),amTardis,
-{{amClusterBomb,3},{amTardis,4},{amWhip,100},{amKamikaze,4}}}
+{loc("Sundaland"),"["..loc("Difficulty: ")..loc("HARD").."] "..loc("Area")..": 1,850,000 km2, "..loc("Population")..": 290,000,000",loc("- You will recieve 2-4 weapons on each kill! (Even on own hogs)"),amTardis,
+{{amClusterBomb,4},{amTardis,4},{amWhip,100},{amKamikaze,4}}}
 
 }
 
-local weaponsetssounds=
+local GLOBAL_CONTINENT_SOUNDS=
 {
 	{sndShotgunFire,sndCover},
 	{sndEggBreak,sndLaugh},
@@ -151,11 +195,12 @@
 	{sndSineGun,sndOops},
 	{sndPiano5,sndStupid},
 	{sndSplash,sndFirstBlood},
-	{sndWarp,sndSameTeam}
+	{sndWarp,sndSameTeam},
+	{sndFrozenHogImpact,sndUhOh}
 }
 
 --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 weapons_dmg = {
+local GLOBAL_WEAPONS_DAMAGE = {
 	{amKamikaze, 0, 1, 0, 1, 0},
 	{amSineGun, 0, 1, 0, 1, 1},
 	{amBazooka, 0, 1, 0, 1, 0},
@@ -182,6 +227,7 @@
 	{amDrill, 0, 1, 0, 1, 0},
 	{amBallgun, 0, 1, 5, 1, 2},
 	{amMolotov, 0, 1, 0, 1, 0},
+	{amHammer, 0, 1, 0, 1, 2},
 	{amBirdy, 0, 1, 0, 1, 0},
 	{amBlowTorch, 0, 1, 0, 1, 0},
 	{amRCPlane, 0, 1, 5, 1, 2},
@@ -189,11 +235,10 @@
 	{amAirAttack, 0, 1, 4, 1, 1},
 	{amFlamethrower, 0, 1, 0, 1, 0},
 	{amSMine, 0, 1, 0, 1, 1},
-	{amHammer, 0, 1, 0, 1, 0},
 	{amDrillStrike, 0, 1, 4, 1, 2},
 	{amSnowball, 0, 1, 0, 1, 0}
 }
-local weapons_supp = {
+local GLOBAL_WEAPONS_SUPPORT = {
 	{amParachute, 0, 1, 0, 1, 0},
 	{amGirder, 0, 1, 0, 1, 0},
 	{amSwitch, 0, 1, 0, 1, 0},
@@ -211,11 +256,13 @@
 	{amLandGun, 0, 1, 0, 1, 0},
 	{amTardis, 0, 1, 0, 1, 0},
 	{amIceGun, 0, 1, 0, 1, 0},
-	{amKnife, 0, 1, 0, 1, 0}
+	{amKnife, 0, 1, 0, 1, 0},
+	{amRubber, 0, 1, 0, 1, 0}
+
 }
 
 --will check after borders and stuff
-function validate_weapon(hog,weapon,amount)
+function ValidateWeapon(hog,weapon,amount)
 	if(MapHasBorder() == false or (MapHasBorder() == true and weapon ~= amAirAttack and weapon ~= amMineStrike and weapon ~= amNapalm and weapon ~= amDrillStrike and weapon ~= amPiano))
 	then
 		if(amount==1)
@@ -227,6 +274,7 @@
 	end
 end
 
+--removes one weapon
 function RemoveWeapon(hog,weapon)
 
 	if(GetAmmoCount(hog, weapon)<100)
@@ -236,49 +284,49 @@
 end
 
 --reset all weapons for a team
-function cleanweps(hog)
+function CleanWeapons(hog)
 
 	local i=1
-	--+1 for skip +1 for freezer
-	while(i<=table.maxn(weapons_supp)+table.maxn(weapons_dmg)+2)
+	--+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 load_weaponset(hog, num)
-	for v,w in pairs(weaponsets[num][5]) 
+function LoadWeaponset(hog, num)
+	for v,w in pairs(GLOBAL_CONTINENT_INFORMATION[num][5])
 	do
-		validate_weapon(hog, w[1],w[2])
+		ValidateWeapon(hog, w[1],w[2])
 	end
 end
 
 --list up all weapons from the icons for each continent
-function load_continent_selection(hog)
+function InitWeaponsMenu(hog)
 
 	if(GetHogLevel(hog)==0)
 	then
-		for v,w in pairs(weaponsets) 
+		for v,w in pairs(GLOBAL_CONTINENT_INFORMATION)
 		do
-			validate_weapon(hog, weaponsets[v][4],1)
+			ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[v][4],1)
 		end
 		AddAmmo(hog,amSwitch) --random continent
-	
+
 	--for the computers
 	else
 		--europe
-		validate_weapon(hog, weaponsets[3][4],1)
+		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[3][4],1)
 		--north america
-		validate_weapon(hog, weaponsets[1][4],1)
+		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[1][4],1)
 	end
 end
 
 --shows the continent info
-function show_continent_info(continent,time,generalinf)
+function ShowContinentInfo(continent,time,generalinf)
 	local geninftext=""
 	local ns=false
 	if(time==-1)
@@ -288,9 +336,12 @@
 	end
 	if(generalinf)
 	then
-		geninftext="| |"..loc("General information")..": |"..generalinfo
+		geninftext="| |"..loc("General information")..": |"..GLOBAL_GENERAL_INFORMATION
 	end
-	ShowMission(weaponsets[continent][1],weaponsets[continent][2],weaponsets[continent][3]..geninftext, -weaponsets[continent][4], time)
+
+	GLOBAL_SHOW_SMALL_INFO=div(time,40)
+
+	ShowMission(GLOBAL_CONTINENT_INFORMATION[continent][1],GLOBAL_CONTINENT_INFORMATION[continent][2],GLOBAL_CONTINENT_INFORMATION[continent][3]..geninftext, -GLOBAL_CONTINENT_INFORMATION[continent][4], time)
 	if(ns)
 	then
 		HideMission()
@@ -298,7 +349,7 @@
 end
 
 --will show a circle of gears (eye candy)
-function visual_gear_explosion(range,xpos,ypos,gear1,gear2)
+function VisualExplosion(range,xpos,ypos,gear1,gear2)
 	local degr=0
 	local lap=30
 	while(lap<range)
@@ -318,312 +369,331 @@
 end
 
 --zealandia (generates weapons from the weaponinfo above
-function get_random_weapon(hog)
-	if(GetGearType(hog) == gtHedgehog and continent[GetHogTeamName(hog)]==9 and getTeamValue(GetHogTeamName(hog), "rand-done-turn")==nil)
+function ZealandiaGetWeapons(hog)
+	if(GetGearType(hog) == gtHedgehog and GLOBAL_TEAM_CONTINENT[GetHogTeamName(hog)]==9 and getTeamValue(GetHogTeamName(hog), "rand-done-turn")==nil)
 	then
-		cleanweps(hog)
-	
+		CleanWeapons(hog)
+
 		local random_weapon = 0
 		local old_rand_weap = 0
 		local rand_weaponset_power = 0
-		
-		local numberof_weapons_supp=table.maxn(weapons_supp)
-		local numberof_weapons_dmg=table.maxn(weapons_dmg)
-		
-		local rand1=math.abs(GetRandom(numberof_weapons_supp)+1)
-		local rand2=math.abs(GetRandom(numberof_weapons_dmg)+1)
-		
-		random_weapon = math.abs(GetRandom(table.maxn(weapons_dmg))+1)
-		
-		while(weapons_dmg[random_weapon][4]>TotalRounds or (MapHasBorder() == true and (weapons_dmg[random_weapon][1]== amAirAttack or weapons_dmg[random_weapon][1] == amMineStrike or weapons_dmg[random_weapon][1] == amNapalm or weapons_dmg[random_weapon][1] == amDrillStrike or weapons_dmg[random_weapon][1] == amPiano)))
+
+		local numberofweaponssupp=table.maxn(GLOBAL_WEAPONS_SUPPORT)
+		local numberofweaponsdmg=table.maxn(GLOBAL_WEAPONS_DAMAGE)
+
+		local rand1=math.abs(GetRandom(numberofweaponssupp)+1)
+		local rand2=math.abs(GetRandom(numberofweaponsdmg)+1)
+
+		random_weapon = math.abs(GetRandom(table.maxn(GLOBAL_WEAPONS_DAMAGE))+1)
+
+		while(GLOBAL_WEAPONS_DAMAGE[random_weapon][4]>TotalRounds or (MapHasBorder() == true and (GLOBAL_WEAPONS_DAMAGE[random_weapon][1]== amAirAttack or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amMineStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amNapalm or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amDrillStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amPiano)))
 		do
-			if(random_weapon>=numberof_weapons_dmg)
+			if(random_weapon>=numberofweaponsdmg)
 			then
 				random_weapon=0
 			end
 			random_weapon = random_weapon+1
 		end
-		validate_weapon(hog, weapons_dmg[random_weapon][1],1)
-		rand_weaponset_power=weapons_dmg[random_weapon][6]
+		ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
+		rand_weaponset_power=GLOBAL_WEAPONS_DAMAGE[random_weapon][6]
 		old_rand_weap = random_weapon
-		
+
 		if(rand_weaponset_power <2)
 		then
 			random_weapon = rand1
-			while(weapons_supp[random_weapon][4]>TotalRounds or rand_weaponset_power+weapons_supp[random_weapon][6]>2)
+			while(GLOBAL_WEAPONS_SUPPORT[random_weapon][4]>TotalRounds or rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]>2)
 			do
-				if(random_weapon>=numberof_weapons_supp)
+				if(random_weapon>=numberofweaponssupp)
 				then
 					random_weapon=0
 				end
 				random_weapon = random_weapon+1
 			end
-			validate_weapon(hog, weapons_supp[random_weapon][1],1)
-			rand_weaponset_power=rand_weaponset_power+weapons_supp[random_weapon][6]
+			ValidateWeapon(hog, GLOBAL_WEAPONS_SUPPORT[random_weapon][1],1)
+			rand_weaponset_power=rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]
 		end
 		--check again if  the power is enough
 		if(rand_weaponset_power <1)
 		then
 			random_weapon = rand2
-			while(weapons_dmg[random_weapon][4]>TotalRounds or old_rand_weap == random_weapon or weapons_dmg[random_weapon][6]>0 or (MapHasBorder() == true and (weapons_dmg[random_weapon][1]== amAirAttack or weapons_dmg[random_weapon][1] == amMineStrike or weapons_dmg[random_weapon][1] == amNapalm or weapons_dmg[random_weapon][1] == amDrillStrike or weapons_dmg[random_weapon][1] == amPiano)))
+			while(GLOBAL_WEAPONS_DAMAGE[random_weapon][4]>TotalRounds or old_rand_weap == random_weapon or GLOBAL_WEAPONS_DAMAGE[random_weapon][6]>0 or (MapHasBorder() == true and (GLOBAL_WEAPONS_DAMAGE[random_weapon][1]== amAirAttack or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amMineStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amNapalm or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amDrillStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amPiano)))
 			do
-				if(random_weapon>=numberof_weapons_dmg)
+				if(random_weapon>=numberofweaponsdmg)
 				then
 					random_weapon=0
 				end
 				random_weapon = random_weapon+1
 			end
-			validate_weapon(hog, weapons_dmg[random_weapon][1],1)
+			ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
 		end
-			
+
 		setTeamValue(GetHogTeamName(hog), "rand-done-turn", true)
 	end
 end
 
 --sundaland add weps
-function get_random_weapon_on_death(hog)
-	
+function SundalandGetWeapons(hog)
+
 		local random_weapon = 0
 		local old_rand_weap = 0
 		local rand_weaponset_power = 0
-		
+
 		local firstTurn=0
-		
-		local numberof_weapons_supp=table.maxn(weapons_supp)
-		local numberof_weapons_dmg=table.maxn(weapons_dmg)
-		
-		local rand1=GetRandom(numberof_weapons_supp)+1
-		local rand2=GetRandom(numberof_weapons_dmg)+1
-		local rand3=GetRandom(numberof_weapons_dmg)+1
-		
-		random_weapon = GetRandom(numberof_weapons_dmg)+1
-		
+
+		local numberofweaponssupp=table.maxn(GLOBAL_WEAPONS_SUPPORT)
+		local numberofweaponsdmg=table.maxn(GLOBAL_WEAPONS_DAMAGE)
+
+		local rand1=GetRandom(numberofweaponssupp)+1
+		local rand2=GetRandom(numberofweaponsdmg)+1
+		local rand3=GetRandom(numberofweaponsdmg)+1
+
+		random_weapon = GetRandom(numberofweaponsdmg)+1
+
 		if(TotalRounds<0)
 		then
 			firstTurn=-TotalRounds
 		end
-		
-		while(weapons_dmg[random_weapon][4]>(TotalRounds+firstTurn) or (MapHasBorder() == true and (weapons_dmg[random_weapon][1]== amAirAttack or weapons_dmg[random_weapon][1] == amMineStrike or weapons_dmg[random_weapon][1] == amNapalm or weapons_dmg[random_weapon][1] == amDrillStrike or weapons_dmg[random_weapon][1] == amPiano)))
+
+		while(GLOBAL_WEAPONS_DAMAGE[random_weapon][4]>(TotalRounds+firstTurn) or (MapHasBorder() == true and (GLOBAL_WEAPONS_DAMAGE[random_weapon][1]== amAirAttack or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amMineStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amNapalm or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amDrillStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amPiano)))
 		do
-			if(random_weapon>=numberof_weapons_dmg)
+			if(random_weapon>=numberofweaponsdmg)
 			then
 				random_weapon=0
 			end
 			random_weapon = random_weapon+1
 		end
-		validate_weapon(hog, weapons_dmg[random_weapon][1],1)
-		rand_weaponset_power=weapons_dmg[random_weapon][6]
+		ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
+		rand_weaponset_power=GLOBAL_WEAPONS_DAMAGE[random_weapon][6]
 		old_rand_weap = random_weapon
-		
+
 		random_weapon = rand1
-		while(weapons_supp[random_weapon][4]>(TotalRounds+firstTurn) or rand_weaponset_power+weapons_supp[random_weapon][6]>2)
+		while(GLOBAL_WEAPONS_SUPPORT[random_weapon][4]>(TotalRounds+firstTurn) or rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]>2)
 		do
-			if(random_weapon>=numberof_weapons_supp)
+			if(random_weapon>=numberofweaponssupp)
 			then
 				random_weapon=0
 			end
 			random_weapon = random_weapon+1
 		end
-		validate_weapon(hog, weapons_supp[random_weapon][1],1)
-		rand_weaponset_power=rand_weaponset_power+weapons_supp[random_weapon][6]
-		
+		ValidateWeapon(hog, GLOBAL_WEAPONS_SUPPORT[random_weapon][1],1)
+		rand_weaponset_power=rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]
+
 		--check again if  the power is enough
 		if(rand_weaponset_power <2)
 		then
 			random_weapon = rand2
-			while(weapons_dmg[random_weapon][4]>(TotalRounds+firstTurn) or old_rand_weap == random_weapon or weapons_dmg[random_weapon][6]>0 or (MapHasBorder() == true and (weapons_dmg[random_weapon][1]== amAirAttack or weapons_dmg[random_weapon][1] == amMineStrike or weapons_dmg[random_weapon][1] == amNapalm or weapons_dmg[random_weapon][1] == amDrillStrike or weapons_dmg[random_weapon][1] == amPiano)))
+			while(GLOBAL_WEAPONS_DAMAGE[random_weapon][4]>(TotalRounds+firstTurn) or old_rand_weap == random_weapon or GLOBAL_WEAPONS_DAMAGE[random_weapon][6]>0 or (MapHasBorder() == true and (GLOBAL_WEAPONS_DAMAGE[random_weapon][1]== amAirAttack or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amMineStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amNapalm or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amDrillStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amPiano)))
 			do
-				if(random_weapon>=numberof_weapons_dmg)
+				if(random_weapon>=numberofweaponsdmg)
 				then
 					random_weapon=0
 				end
 				random_weapon = random_weapon+1
 			end
-			validate_weapon(hog, weapons_dmg[random_weapon][1],1)
-			rand_weaponset_power=weapons_dmg[random_weapon][6]
+			ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
+			rand_weaponset_power=GLOBAL_WEAPONS_DAMAGE[random_weapon][6]
 		end
-		
+
 		if(rand_weaponset_power <1)
 		then
 			random_weapon = rand3
-			while(weapons_dmg[random_weapon][4]>(TotalRounds+firstTurn) or old_rand_weap == random_weapon or weapons_dmg[random_weapon][6]>0 or (MapHasBorder() == true and (weapons_dmg[random_weapon][1]== amAirAttack or weapons_dmg[random_weapon][1] == amMineStrike or weapons_dmg[random_weapon][1] == amNapalm or weapons_dmg[random_weapon][1] == amDrillStrike or weapons_dmg[random_weapon][1] == amPiano)))
+			while(GLOBAL_WEAPONS_DAMAGE[random_weapon][4]>(TotalRounds+firstTurn) or old_rand_weap == random_weapon or GLOBAL_WEAPONS_DAMAGE[random_weapon][6]>0 or (MapHasBorder() == true and (GLOBAL_WEAPONS_DAMAGE[random_weapon][1]== amAirAttack or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amMineStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amNapalm or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amDrillStrike or GLOBAL_WEAPONS_DAMAGE[random_weapon][1] == amPiano)))
 			do
-				if(random_weapon>=numberof_weapons_dmg)
+				if(random_weapon>=numberofweaponsdmg)
 				then
 					random_weapon=0
 				end
 				random_weapon = random_weapon+1
 			end
-			validate_weapon(hog, weapons_dmg[random_weapon][1],1)
+			ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
 		end
-		
+
 		AddVisualGear(GetX(hog), GetY(hog)-30, vgtEvilTrace,0, false)
 		PlaySound(sndReinforce,hog)
 end
 
 
 --this will take that hogs settings for the weapons and add them
-function setweapons()
+function SetContinentWeapons()
 
-	cleanweps(CurrentHedgehog)
-	load_weaponset(CurrentHedgehog,continent[GetHogTeamName(CurrentHedgehog)])
-	
+	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)))
-	
-	show_continent_info(continent[GetHogTeamName(CurrentHedgehog)],0,false)
-end
 
---show health tag (will mostly be used when a hog is damaged)
-function show_damage_tag(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 int_sqrt
-function fire_gear(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)
+	ShowContinentInfo(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)],3000,false)
 end
 
 --==========================run throw all hog/gear weapons ==========================
---will check if the mine is nicely placed 
-function weapon_aust_check(hog)
+--will check if the mine is nicely placed
+function AustraliaSpecialCheckHogs(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 50, false)==true and hog ~= CurrentHedgehog)
+		if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 40, false)==true and hog ~= CurrentHedgehog)
 		then
-			temp_val=1
+			GLOBAL_TEMP_VALUE=1
 		end
 	end
 end
 
 --african special on sedunction
-function weapon_duststorm(hog)
+function AfricaSpecialSeduction(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		local dmg=15
+		local dmg=div(15*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
-				temp_val=temp_val+div(dmg*VampOn,100)
+				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(dmg*GLOBAL_VAMPIRIC_IS_ON,100)
 				SetHealth(hog, GetHealth(hog)-dmg)
 			else
-				temp_val=temp_val+div(GetHealth(hog)*VampOn,100)
+				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(GetHealth(hog)*GLOBAL_VAMPIRIC_IS_ON,100)
 				SetHealth(hog, 0)
 			end
-			show_damage_tag(hog,dmg)
+			ShowDamageTag(hog,dmg)
 		end
 	end
 end
 
---kerguelen special on structure 
-function weapon_scream_pen(hog)
+--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=15+GetHealth(CurrentHedgehog)*0.15
-		
+			local dmg=div((15+div(GetHealth(CurrentHedgehog)*10,100))*GLOBAL_EXTRA_DAMAGE_IS_ON,100)
+
 			if(GetHealth(hog)>dmg)
 			then
-				temp_val=temp_val+div(dmg*2,3)+div(dmg*VampOn*2,100*3)
+				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
-				temp_val=temp_val+(GetHealth(hog)*0.75)+(GetHealth(CurrentHedgehog)*0.1)+div((GetHealth(hog)+(GetHealth(CurrentHedgehog)*0.15))*VampOn,100)
+				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
-			show_damage_tag(hog,dmg)
+			ShowDamageTag(hog,dmg)
 			AddVisualGear(GetX(hog), GetY(hog), vgtExplosion, 0, false)
 			AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
 		end
 	end
 end
 
---kerguelen special swap hog
-function weapon_swap_kerg(hog)
+--will count the hogs, used to get one random hog.
+function KerguelenSpecialYellowCountHogs(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		if(kergulenSpecial ~= -1 and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 450, false))
+		if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 420, false))
 		then
-			local thisX=GetX(CurrentHedgehog)
-			local thisY=GetY(CurrentHedgehog)
-			SetGearPosition(CurrentHedgehog, GetX(hog), GetY(hog))
-			SetGearPosition(hog, thisX, thisY)
-			kergulenSpecial=-1
+			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 weapon_sabotage(hog)
+function KerguelenSpecialGreen(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
 		if(CurrentHedgehog~=hog and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 80, false))
 		then
-			temp_val=1
-			disable_moving[hog]=true
+			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
 
---south american special (used fire gear)
-function weapon_anno_south(hog)
-	local power_radius_outer=230
-	local power_radius_inner=45
-	local power_sa=500000
-	local hypo=0
-	if(gearIsInCircle(hog,GetX(temp_val), GetY(temp_val), power_radius_outer, false) and gearIsInCircle(hog,GetX(temp_val), GetY(temp_val), power_radius_inner, false)==false)
+--first part on kerguelen special (lonely cries)
+function KerguelenSpecialBlueCheck(hog)
+	if(GetGearType(hog) == gtHedgehog and hog ~= CurrentHedgehog and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 550, false))
 	then
-		if(hog == CurrentHedgehog)
-		then
-			SetState(CurrentHedgehog, gstMoving)
-		end
-		SetGearPosition(hog, GetX(hog),GetY(hog)-3)
-		hypo=norm(math.abs(GetX(hog)-GetX(temp_val)),math.abs(GetY(hog)-GetY(temp_val)))
-		SetGearVelocity(hog, div((power_radius_outer-hypo)*power_sa*positive(GetX(hog)-GetX(temp_val)),power_radius_outer), div((power_radius_outer-hypo)*power_sa*positive(GetY(hog)-GetY(temp_val)),power_radius_outer))
-	end
-end
-
---first part on kerguelen special (lonely cries)
-function weapon_cries_a(hog)
-	if(GetGearType(hog) == gtHedgehog and hog ~= CurrentHedgehog and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 500, false))
-	then
-		kergulenSpecial=-1
+		GLOBAL_KERGUELEN_SPECIAL=-1
 	end
 end
 
 --second part on kerguelen special (lonely cries)
-function weapon_cries_b(hog)
+function KerguelenSpecialBlueActivate(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		local dmg=7
+		local dmg=div(6*GLOBAL_EXTRA_DAMAGE_IS_ON,100)
 		if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
 		then
 			if(GetHealth(hog) > dmg)
 			then
-				temp_val=temp_val+div(dmg*VampOn,100)
+				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(dmg*GLOBAL_VAMPIRIC_IS_ON,100)
 				SetHealth(hog, GetHealth(hog)-dmg)
 			else
-				temp_val=temp_val+div(GetHealth(hog)*VampOn,100)
+				GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+div(GetHealth(hog)*GLOBAL_VAMPIRIC_IS_ON,100)
 				SetHealth(hog, 0)
 			end
-			show_damage_tag(hog,dmg)
+			ShowDamageTag(hog,dmg)
+
 			AddVisualGear(GetX(hog), GetY(hog)-30, vgtEvilTrace, 0, false)
 		end
 	end
 end
 
---north american special on sniper
-function weapon_lipstick(hog)
+--australia
+function AustraliaSpecialEggHit(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		if(gearIsInCircle(temp_val,GetX(hog), GetY(hog), 20, false))
+		if(gearIsInCircle(hog,GetX(GLOBAL_TEMP_VALUE), GetY(GLOBAL_TEMP_VALUE), 18, false))
+		then
+			GLOBAL_SABOTAGE_HOGS[hog]=1
+			PlaySound(sndNooo,hog)
+			SetEffect(hog, hePoisoned, 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_radius_inner=45
+		local power_sa=500000
+		local hypo=0
+		if(gearIsInCircle(hog,GetX(GLOBAL_TEMP_VALUE), GetY(GLOBAL_TEMP_VALUE), power_radius_outer, false) and gearIsInCircle(hog,GetX(GLOBAL_TEMP_VALUE), GetY(GLOBAL_TEMP_VALUE), power_radius_inner, false)==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, 1)
 			PlaySound(sndBump)
@@ -632,120 +702,179 @@
 end
 
 --european special on molotov (used fire gear)
-function weapon_health(hog)
+function EuropeSpecialMolotovHit(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		if(gearIsInCircle(temp_val,GetX(hog), GetY(hog), 100, false))
+		if(gearIsInCircle(GLOBAL_TEMP_VALUE,GetX(hog), GetY(hog), 100, false))
 		then
-			SetHealth(hog, GetHealth(hog)+25+(div(25*VampOn,100)))
+			SetHealth(hog, GetHealth(hog)+25+(div(25*GLOBAL_VAMPIRIC_IS_ON,100)))
 			SetEffect(hog, hePoisoned, false)
+			GLOBAL_SABOTAGE_HOGS[hog]=0
 		end
 	end
 end
 
 --for sundaland
-function find_other_hog_in_team(hog)
+function SundalandFindOtherHogInTeam(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		if(GetHogTeamName(turnhog)==GetHogTeamName(hog))
+		if(GetHogTeamName(GLOBAL_SUNDALAND_END_HOG)==GetHogTeamName(hog))
 		then
-			turnhog=hog
+			GLOBAL_SUNDALAND_END_HOG=hog
 		end
 	end
 end
 --============================================================================
 
+--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 https://code.google.com/p/hedgewars/wiki/AmmoTypes
+--ex "Own continent~this continent rocks!~tZ}$" will get 1 knife and inf grenades
+function onParameters()
+
+	if(ScriptParam~=nil)
+	then
+		local continentinfo={}
+		local numb=0
+		local wepcodes=0
+		local where=0
+
+		local x=0
+		local i=1
+
+		--default icon
+		continentinfo[4]=amLowGravity
+
+		for c in ScriptParam:gmatch"."
+		do
+			if(where==0)
+			then
+				if(string.byte(c)==126)
+				then
+					continentinfo[1]=string.sub(ScriptParam,0,numb)
+					wepcodes=numb
+					where=1
+				end
+			elseif(where==1)
+			then
+				if(string.byte(c)==126)
+				then
+					continentinfo[2]=string.sub(ScriptParam,wepcodes+2,numb)
+					continentinfo[5]={}
+					wepcodes=numb
+					where=2
+				end
+			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
+	end
+end
+
 --set each weapons settings
 function onAmmoStoreInit()
 
 	SetAmmo(amSkip, 9, 0, 0, 0)
-	
-	for v,w in pairs(weapons_dmg) 
+
+	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(weapons_supp) 
+
+	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()
-	--trackTeams()
-
-	ShowMission(loc("Continental supplies"),loc("Let a Continent provide your weapons!"),
-	generalinfo, -amLowGravity, 0)
+	ShowMission(loc("Continental supplies"),loc("Let a continent provide your weapons!"),
+	GLOBAL_GENERAL_INFORMATION, -amLowGravity, 0)
 end
 
 --what happen when a turn starts
 function onNewTurn()
-	
+
 	--will refresh the info on each tab weapon
-	australianSpecial=true
-	austmine=nil
-	africanSpecial=0
-	samericanSpecial=false
-	africaspecial2=0
-	kergulenSpecial=1
-	namericanSpecial=1
-	asianflame=0
-	shotgun_s=false
-	sniper_s_in_use=false
-	europe_s=0
-	VampOn=0
-	
-	temp_val=0
-	
-	turnhog=CurrentHedgehog
-	
-	--for sabotage
-	if(disable_moving[CurrentHedgehog]==true)
-	then
-		disallowattack=-100
-		disableRand=GetRandom(3)+5
-	end
-	
+	GLOBAL_AUSTRALIAN_SPECIAL=0
+	GLOBAL_AFRICAN_SPECIAL_SEDUCTION=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_TEMP_VALUE=0
+
+	GLOBAL_SUNDALAND_END_HOG=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(teams_ok[GetHogTeamName(CurrentHedgehog)] == nil)
+		if(GLOBAL_INIT_TEAMS[GetHogTeamName(CurrentHedgehog)] == nil)
 		then
 			AddCaption("["..loc("Select continent!").."]")
-			load_continent_selection(CurrentHedgehog)
-			continent[GetHogTeamName(CurrentHedgehog)]=0
-			swapweps=true
-			teams_ok[GetHogTeamName(CurrentHedgehog)] = 2
-			
-			if(disable_moving[CurrentHedgehog]==true)
+			InitWeaponsMenu(CurrentHedgehog)
+			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=0
+			GLOBAL_SELECT_CONTINENT_CHECK=true
+			GLOBAL_INIT_TEAMS[GetHogTeamName(CurrentHedgehog)] = 2
+
+			if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]~=nil and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
 			then
-				disallowattack=-1000
+				GLOBAL_SABOTAGE_COUNTER=-750
 			end
 		else
 			--if its not the initialization turn
-			swapweps=false
-			if(continent[GetHogTeamName(CurrentHedgehog)]==0)
+			GLOBAL_SELECT_CONTINENT_CHECK=false
+			if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
 			then
-				continent[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(weaponsets))+1
-				setweapons()
+				GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(GLOBAL_CONTINENT_INFORMATION))+1
+				SetContinentWeapons()
 			end
-			show_continent_info(continent[GetHogTeamName(CurrentHedgehog)],-1,true)
-			
+			ShowContinentInfo(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)],-1,true)
+
 			--give zeelandia-teams new weapons so they can plan for the next turn
-			runOnGears(get_random_weapon)
-			
-			--some specials for some continents (temp_val is from get random weapons)
-			if(continent[GetHogTeamName(CurrentHedgehog)]==9)
+			runOnGears(ZealandiaGetWeapons)
+
+			--some specials for some continents (GLOBAL_TEMP_VALUE is from get random weapons)
+			if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==9)
 			then
 				setTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn", nil)
-			elseif(continent[GetHogTeamName(CurrentHedgehog)]==7)
+			elseif(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==7)
 			then
 				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)
@@ -757,33 +886,26 @@
 					setTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick", 0)
 				end
 				setTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick", getTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick")+1)
-				
-			elseif(continent[GetHogTeamName(CurrentHedgehog)]==5)
+
+			elseif(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==5)
 			then
 				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(continent[GetHogTeamName(CurrentHedgehog)]==1)
+			elseif(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==1)
 			then
-				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "NA-turntick")==nil)
-				then
-					setTeamValue(GetHogTeamName(CurrentHedgehog), "NA-turntick", 1)
-				end
-				
-				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "NA-turntick")>=5)
-				then
-					validate_weapon(CurrentHedgehog,amAirAttack,1)
-					setTeamValue(GetHogTeamName(CurrentHedgehog), "NA-turntick", 0)
-				end
-				setTeamValue(GetHogTeamName(CurrentHedgehog), "NA-turntick", getTeamValue(GetHogTeamName(CurrentHedgehog), "NA-turntick")+1)
+				AddAmmo(CurrentHedgehog,amSwitch,GetAmmoCount(CurrentHedgehog, amSwitch)+1)
+
+				ParseCommand("setweap " .. string.char(amSwitch))
+				GLOBAL_TEMP_VALUE=87
 			end
 		end
 	end
@@ -791,467 +913,575 @@
 
 --what happens when you press "tab" (common button)
 function onSwitch()
-	
-	--place mine (australia)
-	if(GetCurAmmoType() == amBaseballBat and australianSpecial==true)
+
+	if(GLOBAL_SWITCH_HOG_IS_ON==false)
 	then
-		temp_val=0
-		runOnGears(weapon_aust_check)
-		
-		if(temp_val==0)
+		--place mine (australia)
+		if(GetCurAmmoType() == amBaseballBat)
 		then
-			austmine=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+5, gtMine, 0, 0, 0, 0)
-			SetHealth(austmine, 100)
-			SetTimer(austmine, 1000)
-			australianSpecial=false
-			swapweps=false
-		else
-			PlaySound(sndDenied)
-		end
+			if(GLOBAL_AUSTRALIAN_SPECIAL==0)
+			then
+				GLOBAL_AUSTRALIAN_SPECIAL = 1
+				AddCaption(GLOBAL_WEAPON_TEXTS[5])
+			elseif(GLOBAL_AUSTRALIAN_SPECIAL==1)
+			then
+				GLOBAL_AUSTRALIAN_SPECIAL = 2
+				AddCaption(GLOBAL_WEAPON_TEXTS[2])
+			else
+				GLOBAL_AUSTRALIAN_SPECIAL = 0
+				AddCaption(loc("NORMAL"))
+			end
 
-	--Asian special
-	elseif(inpara==1)
-	then
-		asiabomb=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+3, gtSnowball, 0, 0, 0, 0)
-		SetGearMessage(asiabomb, 1)
+		--Asian special
+		elseif(GLOBAL_PARACHUTE_IS_ON==1)
+		then
+			asiabomb=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+3, gtSnowball, 0, 0, 0, 0)
+			SetGearMessage(asiabomb, 1)
 
-		inpara=2
-		swapweps=false
+			GLOBAL_PARACHUTE_IS_ON=2
+			GLOBAL_SELECT_CONTINENT_CHECK=false
 
-	--africa
-	elseif(GetCurAmmoType() == amSeduction)
-	then
-		if(africanSpecial==0)
+		--africa
+		elseif(GetCurAmmoType() == amSeduction)
 		then
-			africanSpecial = 1
-			AddCaption(weapontexts[4])
-		else
-			africanSpecial = 0
-			AddCaption(loc("NORMAL"))
-		end
+			if(GLOBAL_AFRICAN_SPECIAL_SEDUCTION==0)
+			then
+				GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 1
+				AddCaption(GLOBAL_WEAPON_TEXTS[4])
+			else
+				GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 0
+				AddCaption(loc("NORMAL"))
+			end
 
-	--south america
-	elseif(GetCurAmmoType() == amGasBomb)
-	then
-		if(samericanSpecial==false)
+		--south america
+		elseif(GetCurAmmoType() == amGasBomb)
 		then
-			samericanSpecial = true
-			AddCaption(weapontexts[3])
-		else
-			samericanSpecial = false
-			AddCaption(loc("NORMAL"))
-		end
+			if(GLOBAL_SOUTH_AMERICAN_SPECIAL==false)
+			then
+				GLOBAL_SOUTH_AMERICAN_SPECIAL = true
+				AddCaption(GLOBAL_WEAPON_TEXTS[3])
+			else
+				GLOBAL_SOUTH_AMERICAN_SPECIAL = false
+				AddCaption(loc("NORMAL"))
+			end
 
-	--africa
-	elseif(GetCurAmmoType() == amSMine)
-	then
-		if(africaspecial2==0)
+		--africa
+		elseif(GetCurAmmoType() == amSMine)
 		then
-			africaspecial2 = 1
-			AddCaption(weapontexts[11])
-		elseif(africaspecial2 == 1)
-		then
-			africaspecial2 = 2
-			AddCaption(weapontexts[12])
-		elseif(africaspecial2 == 2)
-		then
-			africaspecial2 = 0
-			AddCaption(loc("NORMAL"))
-		end
+			if(GLOBAL_AFRICAN_SPECIAL_STICKY==0)
+			then
+				GLOBAL_AFRICAN_SPECIAL_STICKY = 1
+				AddCaption(GLOBAL_WEAPON_TEXTS[11])
+			elseif(GLOBAL_AFRICAN_SPECIAL_STICKY == 1)
+			then
+				GLOBAL_AFRICAN_SPECIAL_STICKY = 2
+				AddCaption(GLOBAL_WEAPON_TEXTS[12])
+			elseif(GLOBAL_AFRICAN_SPECIAL_STICKY == 2)
+			then
+				GLOBAL_AFRICAN_SPECIAL_STICKY = 0
+				AddCaption(loc("NORMAL"))
+			end
 
-	--north america (sniper)
-	elseif(GetCurAmmoType() == amSniperRifle and sniper_s_in_use==false)
-	then
-		if(namericanSpecial==2)
-		then
-			namericanSpecial = 1
-			AddCaption(loc("NORMAL"))
-		elseif(namericanSpecial==1)
+		--north america (sniper)
+		elseif(GetCurAmmoType() == amSniperRifle and GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON==false)
 		then
-			namericanSpecial = 2
-			AddCaption("#"..weapontexts[1])
-		end
+			if(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER==2)
+			then
+				GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER = 1
+				AddCaption(loc("NORMAL"))
+			elseif(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER==1)
+			then
+				GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER = 2
+				AddCaption(GLOBAL_WEAPON_TEXTS[1])
+			end
 
-	--north america (shotgun)
-	elseif(GetCurAmmoType() == amShotgun and shotgun_s~=nil)
-	then
-		if(shotgun_s==false)
+		--north america (shotgun)
+		elseif(GetCurAmmoType() == amShotgun and GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN~=nil)
+		then
+			if(GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN==false)
+			then
+				GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN = true
+				AddCaption(GLOBAL_WEAPON_TEXTS[13])
+			else
+				GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN = false
+				AddCaption(loc("NORMAL"))
+			end
+
+		--europe
+		elseif(GetCurAmmoType() == amMolotov)
 		then
-			shotgun_s = true
-			AddCaption(weapontexts[13])
-		else
-			shotgun_s = false
-			AddCaption(loc("NORMAL"))
-		end
+			if(GLOBAL_EUROPE_SPECIAL==0)
+			then
+				GLOBAL_EUROPE_SPECIAL = 1
+				AddCaption(GLOBAL_WEAPON_TEXTS[14])
+			else
+				GLOBAL_EUROPE_SPECIAL = 0
+				AddCaption(loc("NORMAL"))
+			end
 
-	--europe
-	elseif(GetCurAmmoType() == amMolotov)
-	then
-		if(europe_s==0)
+		--kerguelen
+		elseif(GetCurAmmoType() == amHammer)
 		then
-			europe_s = 1
-			AddCaption(weapontexts[14])
-		else
-			europe_s = 0
-			AddCaption(loc("NORMAL"))
+			if(GLOBAL_KERGUELEN_SPECIAL==6)
+			then
+				GLOBAL_KERGUELEN_SPECIAL = 1
+				AddCaption("Normal")
+			elseif(GLOBAL_KERGUELEN_SPECIAL==1)
+			then
+				GLOBAL_KERGUELEN_SPECIAL = 2
+				AddCaption("#"..GLOBAL_WEAPON_TEXTS[7])
+			elseif(GLOBAL_KERGUELEN_SPECIAL==2 and TotalRounds>=1)
+			then
+				GLOBAL_KERGUELEN_SPECIAL = 3
+				AddCaption("##"..GLOBAL_WEAPON_TEXTS[8])
+			elseif(GLOBAL_KERGUELEN_SPECIAL==3 or (GLOBAL_KERGUELEN_SPECIAL==2 and TotalRounds<1))
+			then
+				GLOBAL_KERGUELEN_SPECIAL = 5
+				AddCaption("###"..GLOBAL_WEAPON_TEXTS[10])
+			elseif(GLOBAL_KERGUELEN_SPECIAL==5)
+			then
+				GLOBAL_KERGUELEN_SPECIAL = 6
+				AddCaption("####"..GLOBAL_WEAPON_TEXTS[15])
+			end
+		--for selecting weaponset, this is mostly for old players.
+		elseif(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
-
-	--swap forward in the weaponmenu (1.0 style)
-	elseif(swapweps==true and (GetCurAmmoType() == amSkip or GetCurAmmoType() == amNothing))
-	then
-		continent[GetHogTeamName(CurrentHedgehog)]=continent[GetHogTeamName(CurrentHedgehog)]+1
-		
-		if(continent[GetHogTeamName(CurrentHedgehog)]> table.maxn(weaponsets))
-		then
-			continent[GetHogTeamName(CurrentHedgehog)]=1
-		end
-		setweapons()
-
-	--kerguelen
-	elseif(GetCurAmmoType() == amHammer)
+	--if switching out from sabotage.
+	elseif(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]~=nil and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==2)
 	then
-		if(kergulenSpecial==6)
-		then
-			kergulenSpecial = 1
-			AddCaption("Normal")
-		elseif(kergulenSpecial==1)
-		then
-			kergulenSpecial = 2
-			AddCaption("#"..weapontexts[7])
-		elseif(kergulenSpecial==2 and TotalRounds>=1)
-		then
-			kergulenSpecial = 3
-			AddCaption("##"..weapontexts[8])
-		elseif(kergulenSpecial==3 or (kergulenSpecial==2 and TotalRounds<1))
-		then
-			kergulenSpecial = 5
-			AddCaption("###"..weapontexts[10])
-		elseif(kergulenSpecial==5)
-		then
-			kergulenSpecial = 6
-			AddCaption("####"..weapontexts[15])
-		end
+		GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=1
 	end
 end
 
-function onPrecise()
-	--swap backwards in the weaponmenu (1.0 style)
-	if(swapweps==true and (GetCurAmmoType() == amSkip or GetCurAmmoType() == amNothing))
+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
-		continent[GetHogTeamName(CurrentHedgehog)]=continent[GetHogTeamName(CurrentHedgehog)]-1
-		
-		if(continent[GetHogTeamName(CurrentHedgehog)]<=0)
+		GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]+1
+
+		if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]> table.maxn(GLOBAL_CONTINENT_INFORMATION))
 		then
-			continent[GetHogTeamName(CurrentHedgehog)]=table.maxn(weaponsets)
+			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=1
 		end
-		setweapons()
+		SetContinentWeapons()
+	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
 end
 
 function onGameTick20()
 	--if you picked a weaponset from the weaponmenu (icon)
-	if(continent[GetHogTeamName(CurrentHedgehog)]==0)
+	if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
 	then
 		if(GetCurAmmoType()==amSwitch)
 		then
-			continent[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(weaponsets))+1
-			setweapons()
+			GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.maxn(GLOBAL_CONTINENT_INFORMATION))+1
+			SetContinentWeapons()
 			PlaySound(sndMineTick)
 		else
-			for v,w in pairs(weaponsets) 
+			for v,w in pairs(GLOBAL_CONTINENT_INFORMATION)
 			do
-				if(GetCurAmmoType()==weaponsets[v][4])
+				if(GetCurAmmoType()==GLOBAL_CONTINENT_INFORMATION[v][4])
 				then
-					continent[GetHogTeamName(CurrentHedgehog)]=v
-					setweapons()
-					PlaySound(weaponsetssounds[v][1])
-					PlaySound(weaponsetssounds[v][2],CurrentHedgehog)
+					GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=v
+					SetContinentWeapons()
+					PlaySound(GLOBAL_CONTINENT_SOUNDS[v][1])
+					PlaySound(GLOBAL_CONTINENT_SOUNDS[v][2],CurrentHedgehog)
 				end
 			end
 		end
 	end
-	
+
 	--show the kerguelen ring
-	if(kergulenSpecial > 1 and GetCurAmmoType() == amHammer)
+	if(GLOBAL_KERGUELEN_SPECIAL > 1 and GetCurAmmoType() == amHammer)
 	then
-		if(visualcircle==nil)
+		if(GLOBAL_VISUAL_CIRCLE==nil)
 		then
-			visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 0, true)
+			GLOBAL_VISUAL_CIRCLE=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 0, true)
 		end
-		
-		if(kergulenSpecial == 2) --walrus scream
+
+		if(GLOBAL_KERGUELEN_SPECIAL == 2) --walrus scream
 		then
-			SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 120, 4, 0xff0000ee)
-		elseif(kergulenSpecial == 3) --swap hog
+			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(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 450, 3, 0xffff00ee)
-		elseif(kergulenSpecial == 5) --cries
+			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 420, 3, 0xffff00ee)
+		elseif(GLOBAL_KERGUELEN_SPECIAL == 5) --cries
 		then
-			SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 500, 1, 0x0000ffee)
-		elseif(kergulenSpecial == 6) --sabotage
+			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 550, 1, 0x0000ffee)
+		elseif(GLOBAL_KERGUELEN_SPECIAL == 6) --sabotage
 		then
-			SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 80, 10, 0x00ff00ee)
+			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 80, 10, 0x00ff00ee)
 		end
-	
-	elseif(visualcircle~=nil)
+
+	elseif(GLOBAL_VISUAL_CIRCLE~=nil)
 	then
-		DeleteVisualGear(visualcircle)
-		visualcircle=nil
+		DeleteVisualGear(GLOBAL_VISUAL_CIRCLE)
+		GLOBAL_VISUAL_CIRCLE=nil
 	end
-	
+
 	--sabotage
-	if(disable_moving[CurrentHedgehog]==true)
+	if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]~=nil and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]>=1)
 	then
-	
-		if(TurnTimeLeft<=150)
+		--for sabotage
+		if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
 		then
-			disable_moving[CurrentHedgehog]=false
-			SetInputMask(0xFFFFFFFF)
-		elseif(disallowattack >= (25*disableRand)+5)
+			local RND=GetRandom(2)
+			if(RND==0)
+			then
+				AddCaption(loc("You are sabotaged, RUN!"))
+			else
+				AddCaption(loc("WARNING: Sabotage detected!"))
+			end
+			PlaySound(sndHellish)
+			GLOBAL_SABOTAGE_COUNTER=-50
+			--update the constant at the top also to something in between
+			GLOBAL_SABOTAGE_FREQUENCY=(25*(RND))+70
+			GLOBAL_SABOTAGE_GRAVITY_SWITCH=true
+
+			GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=2
+		end
+
+		if(GLOBAL_SABOTAGE_COUNTER >0)
+		then
+			if(GLOBAL_SABOTAGE_GRAVITY_SWITCH)
+			then
+				SetGravityFromScale(div(100*GLOBAL_SABOTAGE_COUNTER,GLOBAL_SABOTAGE_FREQUENCY))
+			else
+				SetGravityFromScale(100-div(100*GLOBAL_SABOTAGE_COUNTER,GLOBAL_SABOTAGE_FREQUENCY))
+			end
+
+			if(GLOBAL_SABOTAGE_COUNTER % 20 == 0)
+			then
+				AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
+			end
+		end
+
+		if(TurnTimeLeft<(GetAwayTime*10) or band(GetState(CurrentHedgehog),gstAttacked)==1)
+		then
+			GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=0
+			SetGravity(100)
+		elseif(GLOBAL_SABOTAGE_COUNTER >= GLOBAL_SABOTAGE_FREQUENCY)
 		then
-			temp_val=0
-			
-			AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-10, gtCluster, 0, 0, -160000, 40)
-			
-			disallowattack=0
-		elseif(disallowattack % 20 == 0 and disallowattack>0)
+			if(GLOBAL_SABOTAGE_GRAVITY_SWITCH==true)
+			then
+				GLOBAL_SABOTAGE_GRAVITY_SWITCH=false
+			else
+				--AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-10, gtCluster, 0, 0, -160000, 30)
+				GLOBAL_SABOTAGE_GRAVITY_SWITCH=true
+			end
+
+			if(GetHealth(CurrentHedgehog)<=2)
+			then
+				SetHealth(CurrentHedgehog, 0)
+				GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=0
+				SetGravity(100)
+			else
+				SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)-2)
+			end
+			ShowDamageTag(CurrentHedgehog,2)
+
+			GLOBAL_SABOTAGE_COUNTER=0
+		else
+			GLOBAL_SABOTAGE_COUNTER=GLOBAL_SABOTAGE_COUNTER+1
+		end
+	end
+
+	if(GetCurAmmoType() == amSwitch and GLOBAL_TEMP_VALUE==87)
+	then
+		SetGearMessage(CurrentHedgehog,gmAttack)
+		GLOBAL_TEMP_VALUE=0
+	end
+
+	if(GLOBAL_SHOW_SMALL_INFO>0)
+	then
+		if(GLOBAL_SHOW_SMALL_INFO==1)
 		then
-			SetInputMask(band(0xFFFFFFFF, bnot(gmLJump + gmHJump)))
-			AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
-			disallowattack=disallowattack+1
-		else
-			SetInputMask(0xFFFFFFFF)
-			disallowattack=disallowattack+1
+			ShowContinentInfo(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)],-1,true)
 		end
-	
+
+		GLOBAL_SHOW_SMALL_INFO=GLOBAL_SHOW_SMALL_INFO-1
 	end
-	
+end
+
+--some ppl complained :P
+function onSlot(slot)
+	if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==0)
+	then
+		ParseCommand("setweap " .. string.char(amSkip))
+	end
 end
 
 --if you used hogswitch or any similar weapon, dont enable any weaponchange
 function onAttack()
-	swapweps=false
-	
+	GLOBAL_SELECT_CONTINENT_CHECK=false
+
 	--african special
-	if(africanSpecial == 1 and GetCurAmmoType() == amSeduction and band(GetState(CurrentHedgehog),gstAttacked)==0)
+	if(GLOBAL_AFRICAN_SPECIAL_SEDUCTION == 1 and GetCurAmmoType() == amSeduction and band(GetState(CurrentHedgehog),gstAttacked)==0)
 	then
-		--SetState(CurrentHedgehog, gstAttacked)
 		EndTurn()
-		
-		temp_val=0
-		runOnGears(weapon_duststorm)
-		SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+temp_val)
+
+		GLOBAL_TEMP_VALUE=0
+		runOnGears(AfricaSpecialSeduction)
+		SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+GLOBAL_TEMP_VALUE)
 
 		--visual stuff
-		visual_gear_explosion(250,GetX(CurrentHedgehog), GetY(CurrentHedgehog),vgtSmoke,vgtSmokeWhite)
+		VisualExplosion(250,GetX(CurrentHedgehog), GetY(CurrentHedgehog),vgtSmoke,vgtSmokeWhite)
 		PlaySound(sndParachute)
-		
+
 		RemoveWeapon(CurrentHedgehog,amSeduction)
 
 	--Kerguelen specials
-	elseif(GetCurAmmoType() == amHammer and kergulenSpecial > 1 and band(GetState(CurrentHedgehog),gstAttacked)==0)
+	elseif(GetCurAmmoType() == amHammer and GLOBAL_KERGUELEN_SPECIAL > 1 and band(GetState(CurrentHedgehog),gstAttacked)==0)
 	then
-		--SetState(CurrentHedgehog, gstAttacked)
-		
-		
 		--scream
-		if(kergulenSpecial == 2)
+		if(GLOBAL_KERGUELEN_SPECIAL == 2)
 		then
-			temp_val=0
-			runOnGears(weapon_scream_pen)
-			SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+temp_val)
+			GLOBAL_TEMP_VALUE=0
+			runOnGears(KerguelenSpecialRed)
+			SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+GLOBAL_TEMP_VALUE)
 			PlaySound(sndHellish)
-		
+
 		--swap
-		elseif(kergulenSpecial == 3 and TotalRounds>=1)
+		elseif(GLOBAL_KERGUELEN_SPECIAL == 3 and TotalRounds>=1)
 		then
-			runOnGears(weapon_swap_kerg)
-			PlaySound(sndPiano3)
-			
+			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(kergulenSpecial == 5)
+		elseif(GLOBAL_KERGUELEN_SPECIAL == 5)
 		then
-			runOnGears(weapon_cries_a)
-			if(kergulenSpecial~=-1)
+			runOnGears(KerguelenSpecialBlueCheck)
+			if(GLOBAL_KERGUELEN_SPECIAL~=-1)
 			then
 				AddGear(0, 0, gtWaterUp, 0, 0,0,0)
 				PlaySound(sndWarp)
 				PlaySound(sndMolotov)
-				
-				temp_val=0
-				runOnGears(weapon_cries_b)
-				SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+temp_val)
+
+				GLOBAL_TEMP_VALUE=0
+				runOnGears(KerguelenSpecialBlueActivate)
+				SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+GLOBAL_TEMP_VALUE)
 			else
 				HogSay(CurrentHedgehog, loc("Hogs in sight!"), SAY_SAY)
 			end
-		
+
 		--sabotage
-		elseif(kergulenSpecial == 6)
+		elseif(GLOBAL_KERGUELEN_SPECIAL == 6)
 		then
-			temp_val=0
-			runOnGears(weapon_sabotage)
-			if(temp_val==0)
+			GLOBAL_TEMP_VALUE=0
+			runOnGears(KerguelenSpecialGreen)
+			if(GLOBAL_TEMP_VALUE==0)
 			then
 				PlaySound(sndThrowRelease)
 				AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, 0, -1000000, 32)
 			end
 		end
-		
+
 		EndTurn()
-		
-		DeleteVisualGear(visualcircle)
-		visualcircle=nil
-		kergulenSpecial=0
-		
+
+		DeleteVisualGear(GLOBAL_VISUAL_CIRCLE)
+		GLOBAL_VISUAL_CIRCLE=nil
+		GLOBAL_KERGUELEN_SPECIAL=0
+
 		RemoveWeapon(CurrentHedgehog,amHammer)
-		
+
 	elseif(GetCurAmmoType() == amVampiric)
 	then
-		VampOn=75
-	end
-	--Australian special
-	if(GetGearType(austmine) == gtMine and austmine ~= nil)
+		GLOBAL_VAMPIRIC_IS_ON=75
+	elseif(GetCurAmmoType() == amExtraDamage)
 	then
-		temp_val=0
-		runOnGears(weapon_aust_check)
-		
-		if(gearIsInCircle(austmine,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 30, false)==false or temp_val==1)
-		then
-			AddVisualGear(GetX(austmine), GetY(austmine), vgtDust, 0, false)
-			DeleteGear(austmine)
-			PlaySound(sndDenied)
-		end
-		
-		austmine=nil
+		GLOBAL_EXTRA_DAMAGE_IS_ON=150
 	end
-	
-	australianSpecial=false
 end
 
 function onGearAdd(gearUid)
-	swapweps=false
-	
+	GLOBAL_SELECT_CONTINENT_CHECK=false
+
 	--track the gears im using
-	if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives) 
+	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 samericanSpecial == true)
+	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(africaspecial2 == 1)
+		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(africaspecial2 == 2)
+
+		elseif(GLOBAL_AFRICAN_SPECIAL_STICKY == 2)
 		then
-			fire_gear(CurrentHedgehog,gtNapalmBomb, vx, vy, 0)
+			FireGear(CurrentHedgehog,gtNapalmBomb, vx, vy, 0)
 			DeleteGear(gearUid)
 		end
-
+	--north american special
 	elseif(GetGearType(gearUid)==gtSniperRifleShot)
 	then
-		sniper_s_in_use=true
-		if(namericanSpecial~=1)
+		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(shotgun_s==true)
+		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)
 		else
-			shotgun_s=nil
+			GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN=nil
 		end
-		
-	elseif(GetGearType(gearUid)==gtMolotov and europe_s==1)
+	--european special
+	elseif(GetGearType(gearUid)==gtMolotov and GLOBAL_EUROPE_SPECIAL==1)
 	then
 		vx,vy=GetGearVelocity(gearUid)
-		e_health=fire_gear(CurrentHedgehog,gtCluster, vx, vy, 1)
+		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,gtEgg, vx, vy, 10)
+				--SetHealth(austmine, 2000)
+				SetTimer(austmine, 6000)
+				SetGearMessage(austmine, 3)
+			end
+		else
+			PlaySound(sndDenied)
+		end
 	elseif(GetGearType(gearUid)==gtParachute)
 	then
-		inpara=1
+		GLOBAL_PARACHUTE_IS_ON=1
+	elseif(GetGearType(gearUid)==gtSwitcher)
+	then
+		GLOBAL_SWITCH_HOG_IS_ON=true
 	end
 end
 
 function onGearDelete(gearUid)
 
-	if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives) 
+	if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives)
 	then
 		trackDeletion(gearUid)
-		
+
 		--sundaland special
-		if(GetGearType(gearUid) == gtHedgehog and continent[GetHogTeamName(turnhog)]==10)
+		if(GetGearType(gearUid) == gtHedgehog and GLOBAL_TEAM_CONTINENT[GetHogTeamName(GLOBAL_SUNDALAND_END_HOG)]==10)
 		then
-			if(turnhog==CurrentHedgehog)
+			if(GLOBAL_SUNDALAND_END_HOG==CurrentHedgehog)
 			then
-				runOnGears(find_other_hog_in_team)
+				runOnGears(SundalandFindOtherHogInTeam)
 			end
-		
-			get_random_weapon_on_death(turnhog)
+
+			SundalandGetWeapons(GLOBAL_SUNDALAND_END_HOG)
 		end
 	end
-	
+
 	--north american lipstick
 	if(GetGearType(gearUid)==gtSniperRifleShot )
 	then
-		sniper_s_in_use=false
-		if(namericanSpecial==2)
+		GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER_IS_ON=false
+		if(GLOBAL_NORTH_AMERICAN_SPECIAL_SNIPER==2)
 		then
-			temp_val=gearUid
-			runOnGears(weapon_lipstick)
+			GLOBAL_TEMP_VALUE=gearUid
+			runOnGears(NorthAmericaSpecialSniper)
 		end
 	--north american eagle eye
-	elseif(GetGearType(gearUid)==gtShotgunShot and shotgun_s==true)
+	elseif(GetGearType(gearUid)==gtShotgunShot and GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN==true)
 	then
-		SetState(CurrentHedgehog, gstMoving)
+		EndTurn()
 		SetGearPosition(CurrentHedgehog, GetX(gearUid), GetY(gearUid)+7)
 		PlaySound(sndWarp)
-
 	--south american special
-	elseif(GetGearType(gearUid)==gtGasBomb and samericanSpecial == true)
+	elseif(GetGearType(gearUid)==gtGasBomb and GLOBAL_SOUTH_AMERICAN_SPECIAL == true)
 	then
-		temp_val=gearUid
-		runOnGears(weapon_anno_south)
+		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
-		temp_val=gearUid
-		runOnGears(weapon_health)
-		visual_gear_explosion(100,GetX(gearUid), GetY(gearUid),vgtSmokeWhite,vgtSmokeWhite)
+		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)==gtEgg and GetGearMessage(gearUid)==3)
+	then
+		GLOBAL_TEMP_VALUE=gearUid
+		runOnGears(AustraliaSpecialEggHit)
+		GLOBAL_TEMP_VALUE=0
 	--asia (using para)
 	elseif(GetGearType(gearUid)==gtParachute)
 	then
-		inpara=false
+		GLOBAL_PARACHUTE_IS_ON=false
+	elseif(GetGearType(gearUid)==gtSwitcher)
+	then
+		GLOBAL_SWITCH_HOG_IS_ON=false
 	end
 end
---[[sources (populations & area):
-Own calculations
-Some are approximations.]]
+
+--[[
+	sources (populations & area):
+	Own calculations from wikipedia.
+	Some are approximations.
+]]