# HG changeset patch # User Vatten # Date 1351622440 14400 # Node ID 50e8f6714b22d2d4e655e21d16753070911f6394 # Parent 77faa4b9677198e1bf13e147ce0eeb0508e00add new script specialising in altering weapon behaviour diff -r 77faa4b96771 -r 50e8f6714b22 share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.cfg Tue Oct 30 14:40:40 2012 -0400 @@ -0,0 +1,2 @@ +Default +locked diff -r 77faa4b96771 -r 50e8f6714b22 share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua --- /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(lapTotalRounds) + 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