diff -r a79c1206bacd -r 7d772358dc22 share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua --- 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(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 ~~. Take the weapons generated from globalism, if you want a GUI :P --weapons=, 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. ]] +