--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua Tue Oct 30 14:40:40 2012 -0400
@@ -0,0 +1,1067 @@
+--kolla stavning
+--[[
+-fixed so you cant be sabotaged on your selecting continent turn
+-moved translations to default locale file.
+
+-NA
+ -moved lipstick bullet and pinata bullet to sniperrifle - pinatabullet deals ~23 on direct hit
+ -added eagle eye on shotgun (teleport)
+-SA
+ -reduced duration on birdy from 2 to 1
+ -reduced duration on bee from 2 to 1
+ -fixed anno 1032
+ -reduced donut ring with 25% on anno 1032
+ -reduced push power
+ -reduced birdy from unlimited to 5
+ -unlimited bees
+-EU
+ -increased jetpack from 2 to 3
+ added medicine on molotov
+-AF
+ -fixed Hedgehog projectile
+ -reduced drillstrike from 2 to 1
+ -increased sticky bomb from 6 to 7
+-AS
+ -reduced damage on parabomb from 27 to 22
+ -increased duration on hellish from 4 to 5
+ -per round limit on rope to 3
+-AUS
+ -fixed baseballbat (mine) range and awareness
+-AN
+ -reduced teleport from 3 to 2
+ -changed portalgun so you will only be able to use it 1s per turn
+-KER
+ -reduced damage on sabotage from 40% to 0%
+ -renamed sabotage so it will sabotage all hogs in the circle + fire up a flare (bomb) + more bombs depending on the amount of hogs
+ -increased range on flare (sabotage) with 50%
+ -changed scream of walrus so it will deal 20 dmg and 10% of your hogs health
+ -sabotage will now visually "boil"
+ -added 4 freezers
+-ZE
+ -fixed random system alot.
+ -you will get 3-1 weapons
+ -you can now watch your weapon under your turn
+]]
+
+--Based on Hadashi:s idea, then largely modified
+--Made By Vatten 2012
+
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+loadfile(GetDataPath() .. "Scripts/Utils.lua")()
+loadfile(GetDataPath() .. "Scripts/Tracker.lua")()
+
+--0.9.17
+--[[
+function div(val1,val2)
+ return val1/val2
+end
+
+function ddiv(val1,val2)
+ return div(val1*100,val2)*0.01
+end
+]]
+
+function int_sqrt(num)
+ temp=num
+ while(temp*temp-div(temp,2)>num)
+ do
+ temp=div((temp+div(num,temp)),2)
+ end
+ return math.abs(temp)
+end
+
+function hypotenusa(xx,yy)
+ --return math.abs(yy)/math.sin(math.atan(math.abs(yy)/math.abs(xx)))
+ --AddCaption(int_sqrt((xx^2)+(yy^2)))
+ return int_sqrt((xx^2)+(yy^2))
+end
+
+local teams_ok = {}
+local wepcode_teams={}
+local swapweps=false
+
+--run when game starts on real
+local australianSpecial=false
+local africanSpecial=0
+local africaspecial2=0
+local asianSpecial=false
+local samericanSpecial=false
+local namericanSpecial=1
+local sniper_s_in_use=false
+local kergulenSpecial=1
+local shotgun_s=false
+local europe_s=0
+
+local austmine=nil
+local inpara=false
+local asianflame=0
+
+local temp_val=0
+
+--för sabotage
+local disallowattack=0
+local disallowleft=true
+local disable_moving={}
+
+--skall bytas till för alla teams
+local continent = {}
+
+local weapontexts = {
+loc("Green lipstick bullet: [Is poisonous]"),
+loc("Piñata bullet: [Contains some sweet candy!]"),
+loc("Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"),
+loc("Dust storm: [Deals 20 damage to all enemies in the circle]"),
+loc("Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"),
+loc("Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"),
+loc("Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"),
+loc("Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"),
+loc("Flare: [fire up some bombs depending on hogs depending on hogs in the circle"),
+loc("Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all 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: [Sabotage all hogs in the circle and deal ~10 dmg]")
+}
+
+local weaponsets =
+{
+{loc("North America"),"Area: 24,709,000 km2, Population: 528,720,588",loc("Special Weapons:").."|"..loc("Shotgun")..": "..weapontexts[13].."|"..loc("Sniper Rifle")..": "..weapontexts[1].."|"..loc("Sniper Rifle")..": "..weapontexts[2],amSniperRifle,
+{{amShotgun,100},{amDEagle,100},{amLaserSight,4},{amSniperRifle,100},{amCake,1},{amAirAttack,3},{amSwitch,6}}},
+
+{loc("South America"),"Area: 17,840,000 km2, Population: 387,489,196 ",loc("Special Weapons:").."|"..loc("GasBomb")..": "..weapontexts[3],amGasBomb,
+{{amBirdy,5},{amHellishBomb,1},{amBee,100},{amWhip,100},{amGasBomb,100},{amFlamethrower,100},{amNapalm,2},{amExtraDamage,3}}},
+
+{loc("Europe"),"Area: 10,180,000 km2, Population: 739,165,030",loc("Special Weapons:").."|"..loc("Molotov")..": "..weapontexts[14],amBazooka,
+{{amBazooka,100},{amGrenade,100},{amMortar,100},{amClusterBomb,5},{amMolotov,5},{amVampiric,4},{amPiano,1},{amResurrector,2},{amJetpack,2}}},
+
+{loc("Africa"),"Area: 30,221,532 km2, Population: 1,032,532,974",loc("Special Weapons:").."|"..loc("Seduction")..": "..weapontexts[4].."|"..loc("Sticky Mine")..": "..weapontexts[11].."|"..loc("Sticky Mine")..": "..weapontexts[12],amSMine,
+{{amSMine,6},{amWatermelon,1},{amDrillStrike,1},{amExtraTime,2},{amDrill,100},{amLandGun,3},{amSeduction,100}}},
+
+{loc("Asia"),"Area: 44,579,000 km2, Population: 3,879,000,000",loc("- Will refresh Rope each turn to 3.").."|"..loc("Special Weapons:").."|"..loc("Parachute")..": "..weapontexts[6],amRope,
+{{amKamikaze,4},{amRope,100},{amFirePunch,100},{amParachute,1},{amKnife,3}}},
+
+{loc("Australia"),"Area: 8,468,300 km2, Population: 31,260,000",loc("Special Weapons:").."|"..loc("Baseballbat")..": "..weapontexts[5],amBaseballBat,
+{{amBaseballBat,100},{amMine,100},{amLowGravity,6},{amBlowTorch,100},{amRCPlane,2},{amTardis,100}}},
+
+{loc("Antarctica"),"Area: 14,000,000 km2, Population: ~1,000",loc("- Will refresh portalgun each turn."),amTeleport,
+{{amSnowball,4},{amTeleport,2},{amInvulnerable,6},{amPickHammer,100},{amSineGun,6},{amGirder,4},{amPortalGun,1},{amDynamite,1}}},
+
+{loc("Kerguelen"),"Area: 1,100,000 km2, Population: ~70",loc("Special Weapons:").."|"..loc("Structure")..": "..weapontexts[7].."|"..loc("Structure")..": "..weapontexts[8].." ("..loc("Duration")..": 2)|"..loc("Structure")..": "..weapontexts[9].."|"..loc("Structure")..": "..weapontexts[10],amStructure,
+{{amHammer,100},{amMineStrike,2},{amBallgun,1},{amStructure,100},{amIceGun,4}}},
+--{{amHammer,100},{amMineStrike,2},{amBallgun,1},{amStructure,100}}},
+
+{loc("Zealandia"),"Area: 3,500,000 km2, Population: 4,650,000",loc("- Will Get 1-3 random weapons"),amInvulnerable,
+{{amBazooka,1},{amBlowTorch,1},{amSwitch,1}}}
+}
+
+--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 = {
+ {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, 1},
+ {amClusterBomb, 0, 1, 0, 1, 0},
+ {amBee, 0, 1, 1, 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, 0, 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},
+ {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},
+ {amBirdy, 0, 1, 1, 1, 1},
+ {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},
+ {amHammer, 0, 1, 0, 1, 0},
+ {amDrillStrike, 0, 1, 4, 1, 2},
+ {amSnowball, 0, 1, 0, 1, 0},
+ {amStructure, 0, 0, 0, 1, 1}
+}
+local weapons_supp = {
+ {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, 3, 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}
+}
+
+function validate_weapon(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
+ AddAmmo(hog, weapon,amount)
+ end
+end
+
+--reset all weapons for a team
+function cleanweps(hog)
+
+ local i=1
+ --+1 for skip
+ while(i<=table.getn(weapons_supp)+table.getn(weapons_dmg)+1)
+ do
+ AddAmmo(hog,i,0)
+ i=i+1
+ end
+
+ AddAmmo(hog,amSkip,100)
+end
+
+function load_weaponset(hog, num)
+ for v,w in pairs(weaponsets[num][5])
+ do
+ validate_weapon(hog, w[1],w[2])
+ end
+end
+
+function load_continent_selection(hog)
+ for v,w in pairs(weaponsets)
+ do
+ validate_weapon(hog, weaponsets[v][4],1)
+ end
+ AddAmmo(hog,amSwitch) --random continent
+end
+
+function show_continent_info(continent,time)
+ local ns=false
+ if(time==-1)
+ then
+ time=0
+ ns=true
+ end
+ ShowMission(weaponsets[continent][1],weaponsets[continent][2],weaponsets[continent][3], -weaponsets[continent][4], time)
+ if(ns)
+ then
+ HideMission()
+ end
+end
+
+function visual_gear_explosion(range,xpos,ypos,gear1,gear2)
+ local degr=0
+ local lap=30
+ while(lap<range)
+ do
+ while(degr < 6.2831)
+ do
+ AddVisualGear(xpos+math.cos(degr+0.1)*(lap+5), ypos+math.sin(degr+0.1)*(lap+5), gear1, 0, false)
+ if(gear2~=false)
+ then
+ AddVisualGear(xpos+math.cos(degr)*lap, ypos+math.sin(degr)*lap, gear2, 0, false)
+ end
+ degr=degr+((3.1415*3)*0.125) --1/8 = 0.125
+ end
+ lap=lap+30
+ degr=degr-6.2831
+ end
+end
+
+--zealandia
+function get_random_weapon(hog)
+ local random_weapon = 0
+ local old_rand_weap = 0
+ local rand_weaponset_power = 0
+
+ if(continent[GetHogTeamName(hog)]==9 and (getTeamValue(GetHogTeamName(hog), "rand-done-turn")==false or getTeamValue(GetHogTeamName(hog), "rand-done-turn")==nil))
+ then
+ cleanweps(hog)
+
+ random_weapon = GetRandom(table.getn(weapons_dmg))+1
+ while(weapons_dmg[random_weapon][4]>TotalRounds)
+ do
+ if(random_weapon>=table.getn(weapons_dmg))
+ 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]
+ old_rand_weap = random_weapon
+
+ if(rand_weaponset_power <2)
+ then
+ random_weapon = GetRandom(table.getn(weapons_supp))+1
+ while(weapons_supp[random_weapon][4]>TotalRounds or rand_weaponset_power+weapons_supp[random_weapon][6]>2)
+ do
+ if(random_weapon>=table.getn(weapons_supp))
+ 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]
+ end
+ --check again if the power is enough
+ if(rand_weaponset_power <1)
+ then
+ random_weapon = GetRandom(table.getn(weapons_dmg))+1
+ while(weapons_dmg[random_weapon][4]>TotalRounds or old_rand_weap == random_weapon or weapons_dmg[random_weapon][6]>0)
+ do
+ if(random_weapon>=table.getn(weapons_dmg))
+ then
+ random_weapon=0
+ end
+ random_weapon = random_weapon+1
+ end
+ validate_weapon(hog, weapons_dmg[random_weapon][1],1)
+ end
+
+ setTeamValue(GetHogTeamName(hog), "rand-done-turn", true)
+
+ if(GetHogTeamName(hog)==GetHogTeamName(CurrentHedgehog))
+ then
+ temp_val=false
+ end
+ end
+end
+
+
+function setweapons(skipafter)
+
+ cleanweps(CurrentHedgehog)
+ load_weaponset(CurrentHedgehog,continent[GetHogTeamName(CurrentHedgehog)])
+ if(skipafter==true)
+ then
+ ParseCommand("setweap " .. string.char(amSkip))
+ end
+
+ --AddCaption(loc("You have recieved weapons from ") .. weaponsets[continent[GetHogTeamName(CurrentHedgehog)]][1] .. "!")
+ show_continent_info(continent[GetHogTeamName(CurrentHedgehog)],0)
+end
+
+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
+
+function fire_gear(hedgehog,geartype,vx,vy,timer)
+ return AddGear(div((GetGearRadius(hedgehog)*2*vx),hypotenusa(vx,vy))+GetX(hedgehog), div((GetGearRadius(hedgehog)*2*vy),hypotenusa(vx,vy))+GetY(hedgehog), geartype, 0, vx, vy, timer)
+end
+
+--==========================run throw all hog/gear weapons ==========================
+function weapon_aust_check(hog)
+ if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 50, false)==true and hog ~= CurrentHedgehog)
+ then
+ temp_val=1
+ end
+end
+
+function weapon_duststorm(hog)
+ local dmg=20
+ if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 250, false)==true and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
+ then
+ if(GetHealth(hog) > dmg)
+ then
+ SetHealth(hog, GetHealth(hog)-dmg)
+ else
+ SetHealth(hog, 0)
+ end
+ show_damage_tag(hog,dmg)
+ end
+end
+
+function weapon_scream_walrus(hog)
+ if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 120, false)==true and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
+ then
+ if(GetHealth(hog)>(20+GetHealth(CurrentHedgehog)*0.1))
+ then
+ SetHealth(hog, GetHealth(hog)-(20+GetHealth(CurrentHedgehog)*0.1))
+ temp_val=temp_val+10+GetHealth(CurrentHedgehog)*0.05
+ else
+ SetHealth(hog, 0)
+ temp_val=temp_val+(GetHealth(hog)*0.5)+(GetHealth(CurrentHedgehog)*0.05)
+ end
+ show_damage_tag(hog,(20+GetHealth(CurrentHedgehog)*0.1))
+ AddVisualGear(GetX(hog), GetY(hog), vgtExplosion, 0, false)
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
+ end
+end
+
+function weapon_swap_kerg(hog)
+ if(kergulenSpecial ~= -1 and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 450, false))
+ then
+ local thisX=GetX(CurrentHedgehog)
+ local thisY=GetY(CurrentHedgehog)
+ SetGearPosition(CurrentHedgehog, GetX(hog), GetY(hog))
+ SetGearPosition(hog, thisX, thisY)
+ kergulenSpecial=-1
+ end
+end
+
+function weapon_flare(hog)
+ if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 45, false))
+ then
+ if(GetX(hog)<=GetX(CurrentHedgehog))
+ then
+ dirker=1
+ else
+ dirker=-1
+ end
+ AddVisualGear(GetX(hog), GetY(hog), vgtFire, 0, false)
+ SetGearPosition(CurrentHedgehog, GetX(CurrentHedgehog), GetY(CurrentHedgehog)-5)
+ SetGearVelocity(CurrentHedgehog, 100000*dirker, -300000)
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, -10000*dirker, -1000000, 35)
+ PlaySound(sndHellishImpact2)
+ end
+end
+
+function weapon_sabotage(hog)
+ if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 100, false))
+ then
+ disable_moving[hog]=true
+ AddGear(GetX(hog), GetY(hog), gtCluster, 0, 0, 0, 10)
+ PlaySound(sndNooo,hog)
+ end
+end
+
+function weapon_anno_south(hog)
+ local power_radius_outer=250
+ local power_radius_inner=40
+ local power_sa=6000
+ 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)
+ then
+ if(hog == CurrentHedgehog)
+ then
+ SetState(CurrentHedgehog, gstMoving)
+ end
+ SetGearPosition(hog, GetX(hog),GetY(hog)-3)
+ SetGearVelocity(hog, div((power_radius_outer-hypotenusa(math.abs(GetX(hog)-GetX(temp_val)),math.abs(GetY(hog)-GetY(temp_val))))*power_sa*(GetX(hog)-GetX(temp_val)),power_radius_outer), div((power_radius_outer-hypotenusa(math.abs(GetX(hog)-GetX(temp_val)),math.abs(GetY(hog)-GetY(temp_val))))*power_sa*(GetY(hog)-GetY(temp_val)),power_radius_outer))
+ end
+end
+
+function weapon_cries_a(hog)
+ if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 500, false))
+ then
+ kergulenSpecial=-1
+ end
+end
+
+function weapon_cries_b(hog)
+ if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog))
+ then
+ SetHealth(hog, GetHealth(hog)-1)
+ show_damage_tag(hog,1)
+ AddVisualGear(GetX(hog), GetY(hog)-30, vgtEvilTrace, 0, false)
+ end
+end
+
+function weapon_lipstick(hog)
+ if(gearIsInCircle(temp_val,GetX(hog), GetY(hog), 20, false))
+ then
+ SetEffect(hog, hePoisoned, 1)
+ PlaySound(sndBump)
+ end
+end
+
+function weapon_health(hog)
+ if(gearIsInCircle(temp_val,GetX(hog), GetY(hog), 100, false))
+ then
+ SetHealth(hog, GetHealth(hog)+25)
+ SetEffect(hog, hePoisoned, false)
+ end
+end
+--============================================================================
+
+--set each weapons settings
+function onAmmoStoreInit()
+
+ SetAmmo(amSkip, 9, 0, 0, 0)
+
+ for v,w in pairs(weapons_dmg)
+ do
+ SetAmmo(w[1], w[2], w[3], w[4], w[5])
+ end
+
+ for v,w in pairs(weapons_supp)
+ do
+ SetAmmo(w[1], w[2], w[3], w[4], w[5])
+ end
+end
+
+function onGameStart()
+ trackTeams()
+
+ ShowMission(loc("Continental supplies").." 1.1a",loc("Let a Continent provide your weapons!"),
+ loc("- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease) on Skip|Some weapons have a second option. Find them with [switch/tab]"), -amLowGravity, 0)
+end
+
+--what happen when a turn starts
+function onNewTurn()
+
+ australianSpecial=true
+ asianSpecial=false
+ 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
+
+ temp_val=0
+
+ disallowattack=0
+ disallowleft=true
+ --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)
+ then
+ disable_moving[CurrentHedgehog]=false
+ AddCaption("["..loc("Select continent!").."]")
+ load_continent_selection(CurrentHedgehog)
+ continent[GetHogTeamName(CurrentHedgehog)]=0
+ swapweps=true
+ teams_ok[GetHogTeamName(CurrentHedgehog)] = 2
+ else
+ swapweps=false
+ if(continent[GetHogTeamName(CurrentHedgehog)]==0)
+ then
+ continent[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.getn(weaponsets))+1
+ setweapons(true)
+ end
+ show_continent_info(continent[GetHogTeamName(CurrentHedgehog)],-1)
+ end
+ end
+
+ if(continent[GetHogTeamName(CurrentHedgehog)]==7)
+ then
+ AddAmmo(CurrentHedgehog,amPortalGun,0)
+ AddAmmo(CurrentHedgehog,amPortalGun,1)
+ elseif(continent[GetHogTeamName(CurrentHedgehog)]==5)
+ then
+ AddAmmo(CurrentHedgehog,amParachute,0)
+ AddAmmo(CurrentHedgehog,amParachute,1)
+ end
+
+ temp_val=true
+ runOnHogs(get_random_weapon)
+
+ if(temp_val==true and continent[GetHogTeamName(CurrentHedgehog)]==9 and getTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn")==true)
+ then
+ setTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn", false)
+ end
+
+end
+
+--what happens when you press "tab" (common button)
+function onSwitch()
+
+ --place mine (australia)
+ if(GetCurAmmoType() == amBaseballBat and australianSpecial==true)
+ then
+ temp_val=0
+ runOnHogs(weapon_aust_check)
+
+ if(temp_val==0)
+ 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
+ end
+
+ --Asian special
+ if(asianSpecial==false and inpara~=false)
+ then
+ asiabomb=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+3, gtSnowball, 0, 0, 0, 0)
+ SetGearMessage(asiabomb, 1)
+ asianSpecial=true
+ swapweps=false
+ end
+
+ --africa
+ if(GetCurAmmoType() == amSeduction)
+ then
+ if(africanSpecial==0)
+ then
+ africanSpecial = 1
+ AddCaption(weapontexts[4])
+ else
+ africanSpecial = 0
+ AddCaption(loc("NORMAL"))
+ end
+ end
+ --south america
+ if(GetCurAmmoType() == amGasBomb)
+ then
+ if(samericanSpecial==false)
+ then
+ samericanSpecial = true
+ AddCaption(weapontexts[3])
+ else
+ samericanSpecial = false
+ AddCaption(loc("NORMAL"))
+ end
+ end
+ --africa
+ if(GetCurAmmoType() == amSMine)
+ then
+ if(africaspecial2==0)
+ 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
+ end
+
+ --north america
+ if(GetCurAmmoType() == amSniperRifle and sniper_s_in_use==false)
+ then
+ if(namericanSpecial==3)
+ then
+ namericanSpecial = 1
+ AddCaption(loc("NORMAL"))
+ elseif(namericanSpecial==1)
+ then
+ namericanSpecial = 2
+ AddCaption("#"..weapontexts[1])
+ elseif(namericanSpecial==2)
+ then
+ namericanSpecial = 3
+ AddCaption("##"..weapontexts[2])
+ end
+ end
+
+ if(GetCurAmmoType() == amShotgun and shotgun_s~=nil)
+ then
+ if(shotgun_s==false)
+ then
+ shotgun_s = true
+ AddCaption(weapontexts[13])
+ else
+ shotgun_s = false
+ AddCaption(loc("NORMAL"))
+ end
+ end
+
+ if(GetCurAmmoType() == amMolotov)
+ then
+ if(europe_s==0)
+ then
+ europe_s = 1
+ AddCaption(weapontexts[14])
+ else
+ europe_s = 0
+ AddCaption(loc("NORMAL"))
+ end
+ end
+
+ if(swapweps==true and GetCurAmmoType() == amSkip)
+ then
+ continent[GetHogTeamName(CurrentHedgehog)]=continent[GetHogTeamName(CurrentHedgehog)]+1
+
+ if(continent[GetHogTeamName(CurrentHedgehog)]> table.getn(weaponsets))
+ then
+ continent[GetHogTeamName(CurrentHedgehog)]=1
+ end
+ setweapons(true)
+ end
+
+ if(GetCurAmmoType() == amStructure)
+ then
+ if(kergulenSpecial==5)
+ then
+ kergulenSpecial = 1
+ AddCaption("#"..weapontexts[7])
+ elseif(kergulenSpecial==1 and TotalRounds>=1)
+ then
+ kergulenSpecial = 2
+ AddCaption("##"..weapontexts[8])
+ elseif(kergulenSpecial==2 or (kergulenSpecial==1 and TotalRounds<1))
+ then
+ kergulenSpecial = 3
+ AddCaption("###"..weapontexts[9])
+ elseif(kergulenSpecial==3)
+ then
+ kergulenSpecial = 4
+ AddCaption("####"..weapontexts[10])
+ elseif(kergulenSpecial==4)
+ then
+ kergulenSpecial = 5
+ AddCaption("#####"..weapontexts[15])
+ end
+ end
+end
+
+function onPrecise()
+ if(swapweps==true and GetCurAmmoType() == amSkip)
+ then
+ continent[GetHogTeamName(CurrentHedgehog)]=continent[GetHogTeamName(CurrentHedgehog)]-1
+
+ if(continent[GetHogTeamName(CurrentHedgehog)]<=0)
+ then
+ continent[GetHogTeamName(CurrentHedgehog)]=9
+ end
+ setweapons(true)
+ end
+end
+
+function onSlot()
+ if(continent[GetHogTeamName(CurrentHedgehog)]==0) then
+ ParseCommand("setweap " .. string.char(amSkip))
+ end
+end
+
+function onGameTick20()
+
+ if(teams_ok[GetHogTeamName(CurrentHedgehog)] == 2)
+ then
+ if(GetCurAmmoType()~=amTeleport and swapweps==true and TurnTime-TurnTimeLeft>=100)
+ then
+ teams_ok[GetHogTeamName(CurrentHedgehog)] = true
+ ParseCommand("setweap " .. string.char(amSkip))
+ end
+ end
+
+ if(continent[GetHogTeamName(CurrentHedgehog)]==0)
+ then
+ if(GetCurAmmoType()==amSniperRifle) then
+ continent[GetHogTeamName(CurrentHedgehog)]=1
+ setweapons(false)
+ elseif(GetCurAmmoType()==amGasBomb) then
+ continent[GetHogTeamName(CurrentHedgehog)]=2
+ setweapons(false)
+ elseif(GetCurAmmoType()==amBazooka) then
+ continent[GetHogTeamName(CurrentHedgehog)]=3
+ setweapons(false)
+ elseif(GetCurAmmoType()==amSMine) then
+ continent[GetHogTeamName(CurrentHedgehog)]=4
+ setweapons(false)
+ elseif(GetCurAmmoType()==amRope) then
+ continent[GetHogTeamName(CurrentHedgehog)]=5
+ setweapons(false)
+ elseif(GetCurAmmoType()==amBaseballBat) then
+ continent[GetHogTeamName(CurrentHedgehog)]=6
+ setweapons(false)
+ elseif(GetCurAmmoType()==amTeleport) then
+ continent[GetHogTeamName(CurrentHedgehog)]=7
+ setweapons(false)
+ elseif(GetCurAmmoType()==amStructure) then
+ continent[GetHogTeamName(CurrentHedgehog)]=8
+ setweapons(false)
+ elseif(GetCurAmmoType()==amInvulnerable) then
+ continent[GetHogTeamName(CurrentHedgehog)]=9
+ setweapons(false)
+ elseif(GetCurAmmoType()==amSwitch) then
+ continent[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.getn(weaponsets))+1
+ setweapons(false)
+ end
+ end
+
+ if(kergulenSpecial ~= 0 and GetCurAmmoType() == amStructure)
+ then
+ if(kergulenSpecial == 1)
+ then
+ if(visualcircle==nil)
+ then
+ visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 120, false)
+ end
+ SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 120, 4, 0xff0000ee)
+ elseif(kergulenSpecial == 2)
+ then
+ if(visualcircle==nil)
+ then
+ visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 450, false)
+ end
+ SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 450, 3, 0xffff00ee)
+ elseif(kergulenSpecial == 3)
+ then
+ if(visualcircle==nil)
+ then
+ visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 45, false)
+ end
+ SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 45, 6, 0x00ff00ee)
+ elseif(kergulenSpecial == 4)
+ then
+ if(visualcircle==nil)
+ then
+ visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 500, false)
+ end
+ SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 500, 1, 0x0000ffee)
+ elseif(kergulenSpecial == 5)
+ then
+ if(visualcircle==nil)
+ then
+ visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 100, false)
+ end
+ SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 100, 10, 0xeeeeeeee)
+ end
+
+ elseif(visualcircle~=nil)
+ then
+ DeleteVisualGear(visualcircle)
+ visualcircle=nil
+ end
+
+ if(disable_moving[CurrentHedgehog]==true)
+ then
+
+ if(TurnTimeLeft<=3000)
+ then
+ disable_moving[CurrentHedgehog]=false
+ SetHogLevel(CurrentHedgehog,0)
+ elseif(disallowattack>=300 and disallowattack >= 400)
+ then
+ disallowattack=0
+ SetHogLevel(CurrentHedgehog,1)
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
+ elseif(GetHogLevel(CurrentHedgehog)==1)
+ then
+ SetHogLevel(CurrentHedgehog,0)
+ else
+ disallowattack=disallowattack+1
+ end
+
+ end
+
+end
+
+--if you used hogswitch or any similar weapon, dont enable any weaponchange
+function onAttack()
+ swapweps=false
+ local around=false
+
+ --african special
+ if(africanSpecial == 1 and GetCurAmmoType() == amSeduction)
+ then
+ SetState(CurrentHedgehog, gstAttacked)
+
+ runOnHogs(weapon_duststorm)
+
+ --visual stuff
+ visual_gear_explosion(250,GetX(CurrentHedgehog), GetY(CurrentHedgehog),vgtSmoke,vgtSmokeWhite)
+ PlaySound(sndParachute)
+ end
+
+ --Kerguelen specials
+ if(GetCurAmmoType() == amStructure)
+ then
+ SetState(CurrentHedgehog, gstAttacked)
+ if(kergulenSpecial == 1)
+ then
+ temp_val=0
+ runOnHogs(weapon_scream_walrus)
+ SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+temp_val)
+ PlaySound(sndHellish)
+
+ elseif(kergulenSpecial == 2 and TotalRounds>=1)
+ then
+ runOnHogs(weapon_swap_kerg)
+ PlaySound(sndPiano3)
+ elseif(kergulenSpecial == 3)
+ then
+ runOnHogs(weapon_flare)
+ PlaySound(sndThrowRelease)
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, 0, -1000000, 30)
+
+ elseif(kergulenSpecial == 4)
+ then
+ runOnHogs(weapon_cries_a)
+ if(kergulenSpecial~=-1)
+ then
+ AddGear(0, 0, gtWaterUp, 0, 0,0,0)
+ PlaySound(sndWarp)
+ PlaySound(sndMolotov)
+
+ runOnHogs(weapon_cries_b)
+ else
+ HogSay(CurrentHedgehog, loc("Hogs in sight!"), SAY_SAY)
+ end
+ elseif(kergulenSpecial == 5)
+ then
+ runOnHogs(weapon_sabotage)
+ end
+ DeleteVisualGear(visualcircle)
+ visualcircle=nil
+ end
+
+ --Australian special
+ if(GetGearType(austmine) == gtMine and austmine ~= nil)
+ then
+ temp_val=0
+ runOnHogs(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
+ end
+
+ if(disable_moving[CurrentHedgehog]==true)
+ then
+ disable_moving[CurrentHedgehog]=false
+ SetHogLevel(CurrentHedgehog,0)
+ end
+
+ australianSpecial=false
+end
+
+function onGearAdd(gearUid)
+ swapweps=false
+
+ trackGear(gearUid)
+
+ --remove gasclouds on gasbombspecial
+ if(GetGearType(gearUid)==gtPoisonCloud and samericanSpecial == true)
+ then
+ DeleteGear(gearUid)
+
+ elseif(GetGearType(gearUid)==gtSMine)
+ then
+ vx,vy=GetGearVelocity(gearUid)
+ if(africaspecial2 == 1)
+ then
+ SetState(CurrentHedgehog, gstHHDriven+gstMoving)
+ SetGearPosition(CurrentHedgehog, GetX(CurrentHedgehog),GetY(CurrentHedgehog)-3)
+ SetGearVelocity(CurrentHedgehog, vx, vy)
+ DeleteGear(gearUid)
+ --africaspecial2=0
+ --SetEffect(CurrentHedgehog, heInvulnerable, true)
+ elseif(africaspecial2 == 2)
+ then
+ fire_gear(CurrentHedgehog,gtNapalmBomb, vx, vy, 0)
+ DeleteGear(gearUid)
+ --africaspecial2=0
+ end
+
+ elseif(GetGearType(gearUid)==gtSniperRifleShot)
+ then
+ sniper_s_in_use=true
+ if(namericanSpecial~=1)
+ then
+ SetHealth(gearUid, 1)
+ end
+
+ elseif(GetGearType(gearUid)==gtShotgunShot)
+ then
+ if(shotgun_s==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
+ end
+
+ elseif(GetGearType(gearUid)==gtMolotov and europe_s==1)
+ then
+ vx,vy=GetGearVelocity(gearUid)
+ e_health=fire_gear(CurrentHedgehog,gtCluster, vx, vy, 1)
+ SetGearMessage(e_health, 2)
+ DeleteGear(gearUid)
+
+ elseif(GetGearType(gearUid)==gtParachute)
+ then
+ inpara=gearUid
+ end
+end
+
+function onGearDelete(gearUid)
+
+ trackDeletion(gearUid)
+ --north american specials
+ if(GetGearType(gearUid)==gtSniperRifleShot )
+ then
+ sniper_s_in_use=false
+ if(namericanSpecial==2)
+ then
+ temp_val=gearUid
+ runOnHogs(weapon_lipstick)
+
+ elseif(namericanSpecial==3)
+ then
+ AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false)
+
+ pinata=AddGear(GetX(gearUid), GetY(gearUid), gtCluster, 0, 0, 0, 5)
+ SetGearMessage(pinata,1)
+ end
+
+ elseif(GetGearType(gearUid)==gtCluster and GetGearMessage(gearUid)==1 and namericanSpecial==3)
+ then
+ AddGear(GetX(gearUid), GetY(gearUid), gtCluster, 0, 0, 0, 24)
+
+ elseif(GetGearType(gearUid)==gtShotgunShot and shotgun_s==true)
+ then
+ SetState(CurrentHedgehog, gstMoving)
+ SetGearPosition(CurrentHedgehog, GetX(gearUid), GetY(gearUid)+7)
+ PlaySound(sndWarp)
+
+ --south american special
+ elseif(GetGearType(gearUid)==gtGasBomb and samericanSpecial == true)
+ then
+ temp_val=gearUid
+ runOnGears(weapon_anno_south)
+ AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false)
+
+ elseif(GetGearType(gearUid)==gtSnowball and GetGearMessage(gearUid)==1)
+ then
+ AddGear(GetX(gearUid), GetY(gearUid)+3, gtCluster, 0, 0, 0, 22)
+
+ 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)
+ AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false)
+ PlaySound(sndGraveImpact)
+
+ elseif(GetGearType(gearUid)==gtParachute)
+ then
+ inpara=false
+ end
+end
\ No newline at end of file