share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua
changeset 13364 7d772358dc22
parent 12945 39b7b3ed619e
child 13365 e27540ad33bd
--- a/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Wed May 02 23:07:41 2018 +0200
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Thu May 03 11:58:07 2018 +0200
@@ -1,8 +1,4 @@
 --[[
-	version 1.3n
-
-	The expat (MIT) license
-
 	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:
@@ -11,6 +7,7 @@
 
 	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")
@@ -50,10 +47,10 @@
 end
 
 --Will end the turn + give escape time
-function EndTurn()
+function EndTurn(seconds)
 	SetState(CurrentHedgehog,bor(GetState(CurrentHedgehog),gstAttacked))
-	--3 sec espace time
-	TurnTimeLeft = GetAwayTime*10*3
+	--set espace time
+	TurnTimeLeft = GetAwayTime*10*seconds
  end
 
  --show health tag (will mostly be used when a hog is damaged)
@@ -69,29 +66,13 @@
 	return AddGear(div((GetGearRadius(hedgehog)*2*vx),hypo)+GetX(hedgehog), div((GetGearRadius(hedgehog)*2*vy),hypo)+GetY(hedgehog), geartype, 0, vx, vy, timer)
 end
 
---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
-
-	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_START_TIME=0
+local GLOBAL_HOG_HEALTH=100
 local GLOBAL_TEAM_CONTINENT = {}
 
 --variables for seeing if you have swaped around on a weapon
@@ -104,6 +85,8 @@
 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
@@ -121,149 +104,164 @@
 local GLOBAL_SABOTAGE_COUNTER=0
 local GLOBAL_SABOTAGE_HOGS={}
 local GLOBAL_SABOTAGE_FREQUENCY=0
-local GLOBAL_SABOTAGE_GRAVITY_SWITCH=true
+
+local GLOBAL_CRATE_TEST=-1
 
 --for sundaland
-local GLOBAL_SUNDALAND_END_HOG=0
+local GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME
+
+local OPTION_NO_SPECIALS=false
 
 --====GENERAL GLOBALS (useful for handling continents)====
 
-local GLOBAL_GENERAL_INFORMATION="- "..loc("Per team weapons").."|- "..loc("10 weapon schemes").."|- "..loc("Unique new weapons").."| |"..loc("Select your continent/weaponset: With the \"Up\" or \"Down\" keys. You can also select one with the weapons menu.").."|"..string.format(loc("Note: Some weapons have a second option (See continent information). Find and use them with the \"%s\" key."), loc("switch")).."|"..loc("Tip: See the \"Esc\" key (this menu) if you want to see the currently playing teams continent, or that continents specials.")
-
-local GLOBAL_SHOW_SMALL_INFO=0
+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_WEAPON_TEXTS = {
-loc("Green lipstick bullet: [Poisonous, deals no damage]"),
-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: [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 + 10% of your hog’s 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]"),
-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]"),
-loc("Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"),
-loc("Sabotage/Flare: [Sabotage all hogs in the circle and deal ~1 dmg OR Fire a cluster up into the air]")
-}
+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("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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("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}}}
+{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}
 
 }
 
-local GLOBAL_CONTINENT_SOUNDS=
-{
-	{sndShotgunFire,sndCover},
-	{sndEggBreak,sndLaugh},
-	{sndExplosion,sndEnemyDown},
-	{sndMelonImpact,sndCoward},
-	{sndRopeAttach,sndComeonthen},
-	{sndBaseballBat,sndNooo},
-	{sndSineGun,sndOops},
-	{sndPiano5,sndStupid},
-	{sndSplash,sndFirstBlood},
-	{sndWarp,sndSameTeam},
-	{sndFrozenHogImpact,sndUhOh}
-}
+--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, 1},
-	{amBazooka, 0, 1, 0, 1, 0},
-	{amMineStrike, 0, 1, 5, 1, 2},
-	{amGrenade, 0, 1, 0, 1, 0},
-	{amPiano, 0, 1, 5, 1, 0},
+	{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, 0, 0, 1, 1},
-	{amMine, 0, 1, 0, 1, 0},
-	{amSniperRifle, 0, 1, 0, 1, 1},
-	{amDEagle, 0, 1, 0, 1, 0},
-	{amDynamite, 0, 1, 5, 1, 1},
-	{amFirePunch, 0, 1, 0, 1, 0},
-	{amHellishBomb, 0, 1, 5, 1, 2},
-	{amWhip, 0, 1, 0, 1, 0},
-	{amNapalm, 0, 1, 5, 1, 2},
-	{amPickHammer, 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, 4, 1, 2},
-	{amSeduction, 0, 0, 0, 1, 0},
-	{amWatermelon, 0, 1, 5, 1, 2},
-	{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},
-	{amGasBomb, 0, 0, 0, 1, 0},
-	{amAirAttack, 0, 1, 4, 1, 1},
-	{amFlamethrower, 0, 1, 0, 1, 0},
-	{amSMine, 0, 1, 0, 1, 1},
-	{amDrillStrike, 0, 1, 4, 1, 2},
-	{amSnowball, 0, 1, 0, 1, 0}
+	{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},
+	{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, 1},
-	{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, 1},
-	{amPortalGun, 0, 1, 2, 1, 1},
-	{amResurrector, 0, 1, 3, 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},
-	{amKnife, 0, 1, 0, 1, 0},
-	{amRubber, 0, 1, 0, 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(MapHasBorder() == false or (MapHasBorder() == true and weapon ~= amAirAttack and weapon ~= amMineStrike and weapon ~= amNapalm and weapon ~= amDrillStrike and weapon ~= amPiano))
+	if(wepNotValidBorder(weapon))
 	then
 		if(amount==1)
 		then
@@ -274,6 +272,29 @@
 	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)
 
@@ -303,25 +324,28 @@
 	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)
+	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)
+			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)
+		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[3][4][1],1)
 		--north america
-		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[1][4],1)
+		ValidateWeapon(hog, GLOBAL_CONTINENT_INFORMATION[1][4][1],1)
 	end
 end
 
@@ -339,9 +363,7 @@
 		geninftext="| |"..loc("General information")..": |"..GLOBAL_GENERAL_INFORMATION
 	end
 
-	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)
+	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()
@@ -368,151 +390,88 @@
 	end
 end
 
---zealandia (generates weapons from the weaponinfo above
-function ZealandiaGetWeapons(hog)
-	if(GetGearType(hog) == gtHedgehog and GLOBAL_TEAM_CONTINENT[GetHogTeamName(hog)]==9 and getTeamValue(GetHogTeamName(hog), "rand-done-turn")==nil)
-	then
-		CleanWeapons(hog)
+--give one random weapon
+function GetRandomWeapon(hog, weptype, power, onlyonewep, getdelayedweps, mypower)
 
-		local random_weapon = 0
-		local old_rand_weap = 0
-		local rand_weaponset_power = 0
+	local wepout=nil
+	local rand_weaponset_power=mypower
 
-		local numberofweaponssupp=table.maxn(GLOBAL_WEAPONS_SUPPORT)
-		local numberofweaponsdmg=table.maxn(GLOBAL_WEAPONS_DAMAGE)
+	if(rand_weaponset_power < power)
+	then
+		local numberofweapons=table.maxn(weptype)
 
-		local rand1=math.abs(GetRandom(numberofweaponssupp)+1)
-		local rand2=math.abs(GetRandom(numberofweaponsdmg)+1)
+		local random_weapon = math.abs(GetRandom(numberofweapons)+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)))
+		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>=numberofweaponsdmg)
+			if(random_weapon>=numberofweapons)
 			then
 				random_weapon=0
 			end
 			random_weapon = random_weapon+1
 		end
-		ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
-		rand_weaponset_power=GLOBAL_WEAPONS_DAMAGE[random_weapon][6]
-		old_rand_weap = random_weapon
+
+		wepout=weptype[random_weapon][1]
 
-		if(rand_weaponset_power <2)
-		then
-			random_weapon = rand1
-			while(GLOBAL_WEAPONS_SUPPORT[random_weapon][4]>TotalRounds or rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]>2)
-			do
-				if(random_weapon>=numberofweaponssupp)
-				then
-					random_weapon=0
-				end
-				random_weapon = random_weapon+1
-			end
-			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(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>=numberofweaponsdmg)
-				then
-					random_weapon=0
-				end
-				random_weapon = random_weapon+1
-			end
-			ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
-		end
+		ValidateWeapon(hog, wepout,1)
+		rand_weaponset_power=mypower+weptype[random_weapon][6]
+	end
 
-		setTeamValue(GetHogTeamName(hog), "rand-done-turn", true)
-	end
+	return rand_weaponset_power , wepout
 end
 
---sundaland add weps
-function SundalandGetWeapons(hog)
-
-		local random_weapon = 0
-		local old_rand_weap = 0
-		local rand_weaponset_power = 0
-
-		local firstTurn=0
+--zealandia (generates weapons from the weaponinfo above) and sundaland
+function RandomContinentsGetWeapons(hog)
+	if(GetGearType(hog) == gtHedgehog)
+	then
+		local currCont=GLOBAL_TEAM_CONTINENT[GetHogTeamName(hog)]
 
-		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)
+		if(currCont~=0)
 		then
-			firstTurn=-TotalRounds
-		end
+			local checkDefCont=GLOBAL_CONTINENT_INFORMATION[currCont][4][2]
 
-		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>=numberofweaponsdmg)
-			then
-				random_weapon=0
-			end
-			random_weapon = random_weapon+1
-		end
-		ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
-		rand_weaponset_power=GLOBAL_WEAPONS_DAMAGE[random_weapon][6]
-		old_rand_weap = random_weapon
+			--for sunda
+			local wepamount=getTeamValue(GetHogTeamName(hog), "sundaland-count")
 
-		random_weapon = rand1
-		while(GLOBAL_WEAPONS_SUPPORT[random_weapon][4]>(TotalRounds+firstTurn) or rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]>2)
-		do
-			if(random_weapon>=numberofweaponssupp)
+			if(checkDefCont==9 and getTeamValue(GetHogTeamName(hog), "rand-done-turn")==false)
 			then
-				random_weapon=0
-			end
-			random_weapon = random_weapon+1
-		end
-		ValidateWeapon(hog, GLOBAL_WEAPONS_SUPPORT[random_weapon][1],1)
-		rand_weaponset_power=rand_weaponset_power+GLOBAL_WEAPONS_SUPPORT[random_weapon][6]
+				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
 
-		--check again if  the power is enough
-		if(rand_weaponset_power <2)
-		then
-			random_weapon = rand2
-			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>=numberofweaponsdmg)
-				then
-					random_weapon=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
-				random_weapon = random_weapon+1
+
+				setTeamValue(GetHogTeamName(hog), "sundaland-count",nil)
 			end
-			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(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>=numberofweaponsdmg)
-				then
-					random_weapon=0
-				end
-				random_weapon = random_weapon+1
-			end
-			ValidateWeapon(hog, GLOBAL_WEAPONS_DAMAGE[random_weapon][1],1)
-		end
-
-		AddVisualGear(GetX(hog), GetY(hog)-30, vgtEvilTrace,0, false)
-		PlaySound(sndReinforce,hog)
+	end
 end
 
-
 --this will take that hogs settings for the weapons and add them
 function SetContinentWeapons()
 
@@ -526,7 +485,23 @@
 	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)
@@ -542,7 +517,7 @@
 function AfricaSpecialSeduction(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		local dmg=div(15*GLOBAL_EXTRA_DAMAGE_IS_ON,100)
+		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)
@@ -585,7 +560,7 @@
 function KerguelenSpecialYellowCountHogs(hog)
 	if(GetGearType(hog) == gtHedgehog)
 	then
-		if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 420, false))
+		if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 390, false))
 		then
 			GLOBAL_TEMP_VALUE=GLOBAL_TEMP_VALUE+1
 		end
@@ -627,9 +602,9 @@
 
 --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))
+	if(GetGearType(hog) == gtHedgehog and hog ~= CurrentHedgehog and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 500, false))
 	then
-		GLOBAL_KERGUELEN_SPECIAL=-1
+		GLOBAL_TEMP_VALUE=1
 	end
 end
 
@@ -655,28 +630,14 @@
 	end
 end
 
---australia
-function AustraliaSpecialEggHit(hog)
-	if(GetGearType(hog) == gtHedgehog)
-	then
-		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 power_sa=700000
 		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)
+		if(gearIsInCircle(hog,GetX(GLOBAL_TEMP_VALUE), GetY(GLOBAL_TEMP_VALUE), power_radius_outer, false))
 		then
 			if(hog == CurrentHedgehog)
 			then
@@ -695,7 +656,7 @@
 	then
 		if(gearIsInCircle(GLOBAL_TEMP_VALUE,GetX(hog), GetY(hog), 20, false))
 		then
-			SetEffect(hog, hePoisoned, 1)
+			SetEffect(hog, hePoisoned, 5)
 			PlaySound(sndBump)
 		end
 	end
@@ -707,87 +668,177 @@
 	then
 		if(gearIsInCircle(GLOBAL_TEMP_VALUE,GetX(hog), GetY(hog), 100, false))
 		then
-			HealHog(hog, 25 + (div(25*GLOBAL_VAMPIRIC_IS_ON,100)), hog == CurrentHedgehog)
+			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
 
---for sundaland
-function SundalandFindOtherHogInTeam(hog)
+--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
-		if(GetHogTeamName(GLOBAL_SUNDALAND_END_HOG)==GetHogTeamName(hog))
-		then
-			GLOBAL_SUNDALAND_END_HOG=hog
+		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={}
-		local numb=0
-		local wepcodes=0
-		local where=0
-
-		local x=0
-		local i=1
-
-		--default icon
-		continentinfo[4]=amLowGravity
+		local continentinfo=transferableParamToWeaponSet(ScriptParam,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)
+		if(continentinfo~=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
@@ -811,8 +862,30 @@
 
 --on game start
 function onGameStart()
-	ShowMission(loc("Continental supplies"),loc("Let a continent provide your weapons!"),
-	GLOBAL_GENERAL_INFORMATION, -amLowGravity, 0)
+	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
@@ -821,6 +894,7 @@
 	--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
@@ -830,10 +904,13 @@
 	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=CurrentHedgehog
+	GLOBAL_SUNDALAND_END_HOG_CONTINENT_NAME=GetHogTeamName(CurrentHedgehog)
 
 	--when all hogs are "placed"
 	if(GetCurAmmoType()~=amTeleport)
@@ -841,35 +918,52 @@
 		--will run once when the game really starts (after placing hogs and so on
 		if(GLOBAL_INIT_TEAMS[GetHogTeamName(CurrentHedgehog)] == nil)
 		then
-			AddCaption("["..loc("Select continent!").."]")
+			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]~=nil and GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
-			then
-				GLOBAL_SABOTAGE_COUNTER=-750
-			end
+--			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
-			ShowContinentInfo(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)],-1,true)
+			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(ZealandiaGetWeapons)
+			runOnGears(RandomContinentsGetWeapons)
 
 			--some specials for some continents (GLOBAL_TEMP_VALUE is from get random weapons)
-			if(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==9)
+			if(checkDefCont==9)
 			then
-				setTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn", nil)
-			elseif(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==7)
+				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)
@@ -878,7 +972,6 @@
 				if(getTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick")>=4)
 				then
 					AddAmmo(CurrentHedgehog,amPortalGun)
-					AddAmmo(CurrentHedgehog,amPortalGun)
 					AddAmmo(CurrentHedgehog,amSineGun)
 					AddAmmo(CurrentHedgehog,amSineGun)
 					AddAmmo(CurrentHedgehog,amGirder)
@@ -887,8 +980,9 @@
 				end
 				setTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick", getTeamValue(GetHogTeamName(CurrentHedgehog), "Antarctica2-turntick")+1)
 
-			elseif(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==5)
+			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)
@@ -900,13 +994,21 @@
 					setTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick", 0)
 				end
 				setTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick", getTeamValue(GetHogTeamName(CurrentHedgehog), "Asia-turntick")+1)
-			elseif(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]==1)
+			elseif(checkDefCont==1)
 			then
-				AddAmmo(CurrentHedgehog,amSwitch,GetAmmoCount(CurrentHedgehog, amSwitch)+1)
+				GLOBAL_TEMP_VALUE=0
+				runOnGears(CountHogsInTeam)
 
-				SetWeapon(amSwitch)
-				GLOBAL_TEMP_VALUE=87
+				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
@@ -916,135 +1018,152 @@
 
 	if(GLOBAL_SWITCH_HOG_IS_ON==false)
 	then
-		--place mine (australia)
-		if(GetCurAmmoType() == amBaseballBat)
+		if(OPTION_NO_SPECIALS==false and GLOBAL_SELECT_CONTINENT_CHECK==false)
 		then
-			if(GLOBAL_AUSTRALIAN_SPECIAL==0)
+			--place mine (australia)
+			if(GetCurAmmoType() == amBaseballBat)
 			then
-				GLOBAL_AUSTRALIAN_SPECIAL = 1
-				AddCaption(GLOBAL_WEAPON_TEXTS[5])
-			elseif(GLOBAL_AUSTRALIAN_SPECIAL==1)
+				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
-				GLOBAL_AUSTRALIAN_SPECIAL = 2
-				AddCaption(GLOBAL_WEAPON_TEXTS[2])
-			else
-				GLOBAL_AUSTRALIAN_SPECIAL = 0
-				AddCaption(loc("NORMAL"))
-			end
+				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
 
-		--Asian special
-		elseif(GLOBAL_PARACHUTE_IS_ON==1)
-		then
-			asiabomb=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+3, gtSnowball, 0, 0, 0, 0)
-			SetGearMessage(asiabomb, 1)
+					AddCaption(string.format(GLOBAL_SEDUCTION_SPECIAL_INFO,GLOBAL_SEDUCTION_INCREASER))
+				else
+					GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 0
+					AddCaption(loc("DEFAULT"))
+				end
 
-			GLOBAL_PARACHUTE_IS_ON=2
-			GLOBAL_SELECT_CONTINENT_CHECK=false
+			--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() == amSeduction)
-		then
-			if(GLOBAL_AFRICAN_SPECIAL_SEDUCTION==0)
+			--africa
+			elseif(GetCurAmmoType() == amSMine)
 			then
-				GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 1
-				AddCaption(GLOBAL_WEAPON_TEXTS[4])
-			else
-				GLOBAL_AFRICAN_SPECIAL_SEDUCTION = 0
-				AddCaption(loc("NORMAL"))
-			end
+				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
 
-		--south america
-		elseif(GetCurAmmoType() == amGasBomb)
-		then
-			if(GLOBAL_SOUTH_AMERICAN_SPECIAL==false)
+			--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
-				GLOBAL_SOUTH_AMERICAN_SPECIAL = true
-				AddCaption(GLOBAL_WEAPON_TEXTS[3])
-			else
-				GLOBAL_SOUTH_AMERICAN_SPECIAL = false
-				AddCaption(loc("NORMAL"))
-			end
+				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
 
-		--africa
-		elseif(GetCurAmmoType() == amSMine)
-		then
-			if(GLOBAL_AFRICAN_SPECIAL_STICKY==0)
+			--kerguelen
+			elseif(GetCurAmmoType() == amHammer)
 			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"))
+				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
-
-		--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("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 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
-			if(GLOBAL_EUROPE_SPECIAL==0)
-			then
-				GLOBAL_EUROPE_SPECIAL = 1
-				AddCaption(GLOBAL_WEAPON_TEXTS[14])
-			else
-				GLOBAL_EUROPE_SPECIAL = 0
-				AddCaption(loc("NORMAL"))
-			end
-
-		--kerguelen
-		elseif(GetCurAmmoType() == amHammer)
-		then
-			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
+		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))
+		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
 
@@ -1073,6 +1192,15 @@
 		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()
@@ -1087,6 +1215,15 @@
 		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()
@@ -1101,12 +1238,12 @@
 		else
 			for v,w in pairs(GLOBAL_CONTINENT_INFORMATION)
 			do
-				if(GetCurAmmoType()==GLOBAL_CONTINENT_INFORMATION[v][4])
+				if(GetCurAmmoType()==GLOBAL_CONTINENT_INFORMATION[v][4][1])
 				then
 					GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)]=v
 					SetContinentWeapons()
-					PlaySound(GLOBAL_CONTINENT_SOUNDS[v][1])
-					PlaySound(GLOBAL_CONTINENT_SOUNDS[v][2],CurrentHedgehog)
+					PlaySound(GLOBAL_CONTINENT_INFORMATION[v][6][1])
+					PlaySound(GLOBAL_CONTINENT_INFORMATION[v][6][2],CurrentHedgehog)
 				end
 			end
 		end
@@ -1125,10 +1262,19 @@
 			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, 420, 3, 0xffff00ee)
+			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 390, 3, 0xffff00ee)
 		elseif(GLOBAL_KERGUELEN_SPECIAL == 5) --cries
 		then
-			SetVisualGearValues(GLOBAL_VISUAL_CIRCLE, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 550, 1, 0x0000ffee)
+
+			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)
@@ -1146,56 +1292,31 @@
 		--for sabotage
 		if(GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]==1)
 		then
-			local RND=GetRandom(2)
-			if(RND==0)
-			then
-				AddCaption(loc("You are sabotaged, RUN!"))
-			else
-				AddCaption(loc("WARNING: Sabotage detected!"))
-			end
+			AddCaption(loc("You are sabotaged, RUN!"))
+
 			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_FREQUENCY=100
+			SetGravity(350)
 
 			GLOBAL_SABOTAGE_HOGS[CurrentHedgehog]=2
 		end
 
-		if(GLOBAL_SABOTAGE_COUNTER >0)
+		if(GLOBAL_SABOTAGE_COUNTER % 20 == 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
+			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
-			SetGravity(100)
 		elseif(GLOBAL_SABOTAGE_COUNTER >= GLOBAL_SABOTAGE_FREQUENCY)
 		then
-			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
@@ -1205,23 +1326,17 @@
 		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
-
-	if(GLOBAL_SHOW_SMALL_INFO>0)
-	then
-		if(GLOBAL_SHOW_SMALL_INFO==1)
-		then
-			ShowContinentInfo(GLOBAL_TEAM_CONTINENT[GetHogTeamName(CurrentHedgehog)],-1,true)
-		end
-
-		GLOBAL_SHOW_SMALL_INFO=GLOBAL_SHOW_SMALL_INFO-1
-	end
 end
 
 --some ppl complained :P
@@ -1234,12 +1349,21 @@
 
 --if you used hogswitch or any similar weapon, dont enable any weaponchange
 function onAttack()
-	GLOBAL_SELECT_CONTINENT_CHECK=false
+	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()
+		EndTurn(3)
 
 		GLOBAL_TEMP_VALUE=0
 		runOnGears(AfricaSpecialSeduction)
@@ -1251,9 +1375,22 @@
 
 		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
@@ -1263,7 +1400,7 @@
 			PlaySound(sndHellish)
 
 		--swap
-		elseif(GLOBAL_KERGUELEN_SPECIAL == 3 and TotalRounds>=1)
+		elseif(GLOBAL_KERGUELEN_SPECIAL == 3)
 		then
 			GLOBAL_TEMP_VALUE=0
 			runOnGears(KerguelenSpecialYellowCountHogs)
@@ -1279,14 +1416,14 @@
 		--cries
 		elseif(GLOBAL_KERGUELEN_SPECIAL == 5)
 		then
+			GLOBAL_TEMP_VALUE=0
 			runOnGears(KerguelenSpecialBlueCheck)
-			if(GLOBAL_KERGUELEN_SPECIAL~=-1)
+			if(GLOBAL_TEMP_VALUE==0)
 			then
 				AddGear(0, 0, gtWaterUp, 0, 0,0,0)
 				PlaySound(sndWarp)
 				PlaySound(sndMolotov)
 
-				GLOBAL_TEMP_VALUE=0
 				runOnGears(KerguelenSpecialBlueActivate)
 				SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+GLOBAL_TEMP_VALUE)
 			else
@@ -1298,14 +1435,17 @@
 		then
 			GLOBAL_TEMP_VALUE=0
 			runOnGears(KerguelenSpecialGreen)
-			if(GLOBAL_TEMP_VALUE==0)
+
+			PlaySound(sndThrowRelease)
+			AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, 0, -1000000, 32)
+
+			if(GLOBAL_TEMP_VALUE==1)
 			then
-				PlaySound(sndThrowRelease)
-				AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, 0, -1000000, 32)
+				escapetime=10
 			end
 		end
 
-		EndTurn()
+		EndTurn(escapetime)
 
 		DeleteVisualGear(GLOBAL_VISUAL_CIRCLE)
 		GLOBAL_VISUAL_CIRCLE=nil
@@ -1368,8 +1508,6 @@
 			AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false)
 			AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false)
 			PlaySound(sndBirdyLay)
-		else
-			GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN=nil
 		end
 	--european special
 	elseif(GetGearType(gearUid)==gtMolotov and GLOBAL_EUROPE_SPECIAL==1)
@@ -1394,9 +1532,9 @@
 				SetHealth(austmine, 100)
 				SetTimer(austmine, 1000)
 			else
-				local austmine=FireGear(CurrentHedgehog,gtEgg, vx, vy, 10)
-				--SetHealth(austmine, 2000)
-				SetTimer(austmine, 6000)
+				local austmine=FireGear(CurrentHedgehog,gtBall, vx, vy, 1)
+				--SetHealth(austmine, 1)
+				SetTimer(austmine, 1000)
 				SetGearMessage(austmine, 3)
 			end
 		else
@@ -1411,22 +1549,43 @@
 	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
-		trackDeletion(gearUid)
+		--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")
 
-		--sundaland special
-		if(GetGearType(gearUid) == gtHedgehog and GLOBAL_TEAM_CONTINENT[GetHogTeamName(GLOBAL_SUNDALAND_END_HOG)]==10)
-		then
-			if(GLOBAL_SUNDALAND_END_HOG==CurrentHedgehog)
+			if(currvalue==nil)
 			then
-				runOnGears(SundalandFindOtherHogInTeam)
+				currvalue=0
 			end
 
-			SundalandGetWeapons(GLOBAL_SUNDALAND_END_HOG)
+			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
@@ -1441,7 +1600,6 @@
 	--north american eagle eye
 	elseif(GetGearType(gearUid)==gtShotgunShot and GLOBAL_NORTH_AMERICAN_SPECIAL_SHOTGUN==true)
 	then
-		EndTurn()
 		SetGearPosition(CurrentHedgehog, GetX(gearUid), GetY(gearUid)+7)
 		PlaySound(sndWarp)
 	--south american special
@@ -1465,11 +1623,10 @@
 		AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false)
 		PlaySound(sndGraveImpact)
 	--australian special
-	elseif(GetGearType(gearUid)==gtEgg and GetGearMessage(gearUid)==3)
+	elseif(GetGearType(gearUid)==gtBall and GetGearMessage(gearUid)==3)
 	then
-		GLOBAL_TEMP_VALUE=gearUid
-		runOnGears(AustraliaSpecialEggHit)
-		GLOBAL_TEMP_VALUE=0
+		SpawnRandomCrate(GetX(gearUid), GetY(gearUid))
+
 	--asia (using para)
 	elseif(GetGearType(gearUid)==gtParachute)
 	then
@@ -1485,3 +1642,4 @@
 	Own calculations from wikipedia.
 	Some are approximations.
 ]]
+