share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua
changeset 11995 ec3fe3068932
parent 11994 6fd96a5d4e6f
child 11996 936ac92cb67a
equal deleted inserted replaced
11994:6fd96a5d4e6f 11995:ec3fe3068932
   526 				{"war_desertofficer","war_desertgrenadier1","war_desertmedic","war_desertsapper1","war_desertgrenadier2","war_desertgrenadier4","war_desertsapper2","war_desertgrenadier5"},
   526 				{"war_desertofficer","war_desertgrenadier1","war_desertmedic","war_desertsapper1","war_desertgrenadier2","war_desertgrenadier4","war_desertsapper2","war_desertgrenadier5"},
   527 				{"Brigadier Briggs","Lt. Luke","Sgt. Smith","Corporal Calvin","Frank","Joe","Sam","Donald"},
   527 				{"Brigadier Briggs","Lt. Luke","Sgt. Smith","Corporal Calvin","Frank","Joe","Sam","Donald"},
   528 				"F","cm_birdy","Default","Grave","Castle"
   528 				"F","cm_birdy","Default","Grave","Castle"
   529 				},
   529 				},
   530 
   530 
   531 				--{
       
   532 				--"Sci-Fi",
       
   533 				--{"scif_2001O","scif_2001Y","scif_BrainSlug","scif_BrainSlug2","scif_Geordi","scif_SparkssHelmet","scif_cosmonaut","scif_cyberpunk","scif_swDarthvader","scif_swStormtrooper"},
       
   534 				--{},
       
   535 				--"R","cm_birdy","Default","Grave","Castle"
       
   536 				--},
       
   537 
       
   538 
       
   539 
       
   540 
       
   541 				--
       
   542 
       
   543 				--{
       
   544 				--,
       
   545 				--{},
       
   546 				--{},
       
   547 				--"R","cm_birdy","Default","Grave","Castle"
       
   548 				--},
       
   549 
       
   550 				-- don't forget new additions need to be added to:
   531 				-- don't forget new additions need to be added to:
   551 				--pMode = {"Clowns","Street Fighters","Cybernetic Empire","Color Squad","Fruit","The Police","The Ninja-Samurai Alliance","Pokemon","The Zoo","The Devs","The Hospital"}
   532 				--pMode = {"Clowns","Street Fighters","Cybernetic Empire","Color Squad","Fruit","The Police","The Ninja-Samurai Alliance","Pokemon","The Zoo","The Devs","The Hospital"}
   552 				-- but maybe we can just get the size of this array and automatically generate a list instead
   533 				-- but maybe we can just get the size of this array and automatically generate a list instead
   553 
   534 
   554 
   535 
   559 				"R","cm_birdy","Default","heart","Castle"
   540 				"R","cm_birdy","Default","heart","Castle"
   560 				}
   541 				}
   561 
   542 
   562 				}
   543 				}
   563 
   544 
   564 
       
   565 --local menuArray =	{
       
   566 --			"Initialisation Menu", "Team Menu"
       
   567 --			}
       
   568 
       
   569 --local hatArray = 	{hahahaha, you're joking, right?}
       
   570 --[[well, here are most of them as vaguely ordered by theme, there may be some duplicates
       
   571 NoHat,
       
   572 NinjaFull,NinjaStraight,NinjaTriangle,Samurai,StrawHat,StrawHatEyes,StrawHatFacial,naruto
       
   573 sm_daisy,sm_luigi,sm_mario,sm_peach,sm_toad,sm_wario,
       
   574 ShortHair_Black,ShortHair_Brown,ShortHair_Grey,ShortHair_Red,ShortHair_Yellow
       
   575 hair_blue,hair_green,hair_red,hair_yellow,hair_purple,hair_grey,hair_orange,hair_pink
       
   576 Skull,Jason,ShaggyYeti,Zombi,cyclops,Mummy,hogpharoah,vampirichog
       
   577 cap_blue,cap_red,cap_green,cap_junior,cap_yellow,cap_thinking
       
   578 WhySoSerious,clown-copper,clown-crossed,clown,Joker
       
   579 bobby,bobby2v,policecap,policegirl,royalguard,
       
   580 spcartman,spstan,spkenny,spkyle,
       
   581 sf_balrog,sf_blanka,sf_blankatoothless,sf_chunli,sf_guile,sf_honda,sf_ken,sf_ryu,sf_vega
       
   582 Glasses,lambda,SunGlasses,Terminator_Glasses,Moustache_glasses
       
   583 Laminaria,Dragon,
       
   584 cyborg1,cyborg2,
       
   585 dish_Ladle,dish_SauceBoatSilver,dish_Teacup,dish_Teapot
       
   586 laurel,flag_french,flag_germany,flag_italy,flag_usa
       
   587 fr_apple,fr_banana,fr_lemon,fr_orange,fr_pumpkin,fr_tomato
       
   588 doctor,nurse,war_britmedic,war_desertmedic,war_germanww2medic,
       
   589 poke_ash,poke_charmander,poke_chikorita,poke_jigglypuff,
       
   590 poke_lugia,poke_mudkip,poke_pikachu,poke_slowpoke,poke_squirtle,poke_voltorb
       
   591 zoo_Bat,zoo_Beaver,zoo_Bunny,zoo_Deer,zoo_Hedgehog,zoo_Moose,zoo_Pig,zoo_Porkey,zoo_Sheep
       
   592 zoo_chicken,zoo_elephant,zoo_fish,zoo_frog,zoo_snail,zoo_turtle
       
   593 bushhider,cratehider,Disguise,
       
   594 tf_demoman,tf_scout,Sniper,
       
   595 Bandit,thug,anzac,Cowboy
       
   596 pirate_jack,pirate_jack_bandana,
       
   597 tiara,crown,royalguard
       
   598 punkman,Einstein,
       
   599 sth_Amy,sth_AmyClassic,sth_Eggman,sth_Knux,sth_Metal,sth_Shadow,sth_Sonic,sth_SonicClassic,sth_Super,sth_Tails
       
   600 vc_gakupo,vc_gumi,vc_kaito,vc_len,vc_luka,vc_meiko,vc_miku,vc_rin
       
   601 touhou_chen,touhou_marisa,touhou_patchouli,touhou_remelia,touhou_suwako,touhou_yukari,
       
   602 TeamHeadband,TeamSoldier,TeamTopHat,TeamWheatley,cap_team,hair_team,
       
   603 bb_bob,bb_bub,bb_cororon,bb_kululun,bubble,
       
   604 Viking,spartan,swordsmensquire,knight,dwarf,
       
   605 WizardHat,tophats,pinksunhat,ushanka,mexicansunbrero,HogInTheHat,
       
   606 4gsuif,
       
   607 AkuAku,
       
   608 noface,
       
   609 Coonskin3,
       
   610 Dan,
       
   611 Dauber,
       
   612 Eva_00b,Eva_00y,
       
   613 Evil,InfernalHorns,angel,
       
   614 Gasmask,
       
   615 IndianChief,Cowboy,
       
   616 MegaHogX,
       
   617 Meteorhelmet,
       
   618 Moustache,
       
   619 OldMan,
       
   620 Pantsu,
       
   621 Plunger,
       
   622 RSR,
       
   623 Rain,stormcloud,DayAndNight,
       
   624 chuckl,Rambo,RobinHood,
       
   625 Santa,snowhog,ShaggyYeti,eastertop,
       
   626 Sleepwalker,
       
   627 SparkleSuperFun,
       
   628 SunWukong,
       
   629 android,
       
   630 beefeater,
       
   631 car,
       
   632 chef,
       
   633 constructor,
       
   634 footballhelmet,
       
   635 judo,
       
   636 lamp,
       
   637 mechanicaltoy,
       
   638 mickey_ears,
       
   639 snorkel,
       
   640 quotecap,
       
   641 rasta,
       
   642 
       
   643 metalband,
       
   644 kiss_criss,kiss_frehley,kiss_simmons,kiss_stanley,mp3,Elvis
       
   645 mv_Spidey,mv_Venom,
       
   646 ntd_Falcon,ntd_Kirby,ntd_Link,ntd_Samus,
       
   647 scif_2001O,scif_2001Y,scif_BrainSlug,scif_BrainSlug2,scif_Geordi,scif_SparkssHelmet,
       
   648 scif_cosmonaut,scif_cyberpunk,scif_swDarthvader,scif_swStormtrooper,
       
   649 war_UNPeacekeeper01,war_UNPeacekeeper02,
       
   650 war_airwarden02,war_airwarden03,
       
   651 war_americanww2helmet,
       
   652 war_britmedic,war_britpthhelmet,war_britsapper,
       
   653 war_desertgrenadier1,war_desertgrenadier2,war_desertgrenadier4,war_desertgrenadier5,war_desertmedic,
       
   654 war_desertofficer,war_desertsapper1,war_desertsapper2,
       
   655 war_frenchww1gasmask,war_frenchww1helmet,
       
   656 war_germanww1helmet2,war_germanww1tankhelm,war_germanww2medic,war_germanww2pith,
       
   657 war_grenadier1,war_trenchgrenadier1,war_trenchgrenadier2,war_trenchgrenadier3,
       
   658 war_plainpith,
       
   659 war_sovietcomrade1,war_sovietcomrade2,
       
   660 war_trenchfrench01,war_trenchfrench02,]]
       
   661 
       
   662 local colorArray = 	{
   545 local colorArray = 	{
   663 					--{0xff0000ff, "0xff0000ff", "Red"}, -- look up hw red
   546 					{0xff0204ff, "0xff0204ff", "Red"},
   664 					{0xff4980c1, "0xff4980c1", "Blue"},
   547 					{0xff4980c1, "0xff4980c1", "Blue"},
   665 					{0xff1de6ba, "0xff1de6ba", "Teal"},
   548 					{0xff1de6ba, "0xff1de6ba", "Teal"},
   666 					{0xffb541ef, "0xffb541ef", "Purple"},
   549 					{0xffb541ef, "0xffb541ef", "Purple"},
   667 					{0xffe55bb0, "0xffe55bb0", "Pink"},
   550 					{0xffe55bb0, "0xffe55bb0", "Pink"},
   668 					{0xff20bf00, "0xff20bf00", "Green"},
   551 					{0xff20bf00, "0xff20bf00", "Green"},
   669 					{0xfffe8b0e, "0xfffe8b0e", "Orange"},
   552 					{0xfffe8b0e, "0xfffe8b0e", "Orange"},
   670 					{0xff5f3605, "0xff5f3605", "Brown"},
   553 					{0xff5f3605, "0xff5f3605", "Brown"},
   671 					{0xffffff01, "0xffffff01", "Yellow"}
   554 					{0xffffff01, "0xffffff01", "Yellow"}
   672 					}
   555 					}
   673 
   556 
   674 local graveArray = 	{
       
   675 					"Badger", "Bone", "bp2", "bubble", "Cherry",
       
   676 					"chest", "coffin", "deadhog", "dragonball", "Duck2",
       
   677 					"Earth", "Egg", "eyecross", "Flower", "Ghost",
       
   678 					"Grave", "heart", "money", "mouton1", "octopus",
       
   679 					"plant2", "plant3", "Plinko", "pokeball", "pyramid",
       
   680 					"ring", "Rip", "Rubberduck", "Simple", "skull",
       
   681 					"star", "Status"
       
   682 					}
       
   683 
       
   684 local voiceArray = 	{
       
   685 					"British","Classic","Default","Default_es","Default_uk",
       
   686 					"HillBilly","Mobster","Pirate","Robot","Russian","Singer",
       
   687 					"Surfer"
       
   688 					}
       
   689 
       
   690 local fortArray =	{
   557 local fortArray =	{
   691 					"Cake", "Castle", "Earth", "EvilChicken", "Flowerhog",
   558 					"Cake", "Castle", "Earth", "EvilChicken", "Flowerhog",
   692 					"Hydrant", "Lego", "Plane", "Statue", "Tank",
   559 					"Hydrant", "Lego", "Plane", "Statue", "SteelTower", "Tank",
   693 					"UFO", "Wood"
   560 					"UFO", "Wood"
   694 					}
       
   695 
       
   696 -- non-exhaustive list of flags, feel free to choose others
       
   697 local flagArray = 	{
       
   698 					"cm_binary", "cm_birdy", "cm_earth", "cm_pirate", "cm_star",
       
   699 					"cm_hurrah", "cm_hax0r", "cm_balrog", "cm_spider", "cm_eyeofhorus"
       
   700 					}
   561 					}
   701 
   562 
   702 local gameFlagList =	{
   563 local gameFlagList =	{
   703 			{"gfMultiWeapon", false, gfMultiWeapon},
   564 			{"gfMultiWeapon", false, gfMultiWeapon},
   704 			{"gfBorder", false, gfBorder},
   565 			{"gfBorder", false, gfBorder},
   727 			{"gfDisableWind", false, gfDisableWind},
   588 			{"gfDisableWind", false, gfDisableWind},
   728 			{"gfMoreWind", false, gfMoreWind},
   589 			{"gfMoreWind", false, gfMoreWind},
   729 			{"gfTagTeam", false, gfTagTeam}
   590 			{"gfTagTeam", false, gfTagTeam}
   730 			}
   591 			}
   731 
   592 
   732 local themeList = 	{"Art", "Bamboo", "Bath", --[["Blox",]] "Brick", "Cake", "Castle", "Cave", "Cheese",
       
   733 		"Christmas", "City", "Compost", --[["CrazyMission", "Deepspace",]] "Desert", "Earthrise",
       
   734 		--[["Eyes",]] "Freeway", "Golf", "Halloween", "Hell", --[["HogggyWood",]] "Island", "Jungle", "Nature",
       
   735 		"Olympics", "Planes", "Sheep", "Snow", "Stage", "Underwater"
       
   736 		}
       
   737 
       
   738 local mapList = 	{
       
   739 		"Bamboo", "BambooPlinko", "Basketball", "Bath", "Blizzard", "Blox", "Bubbleflow",
       
   740 		"Battlefield", "Cake", "Castle", "Cave", "Cheese", "Cogs", "Control", "Earthrise",
       
   741 		"Eyes", "Hammock", "Hedgelove", "Hedgewars", "Hogville", "Hydrant", "Islands",
       
   742 		"Knockball", "Lonely_Island", "Mushrooms", "Octorama", "PirateFlag",
       
   743 		"Plane", "Ropes", "Ruler", "Sheep", "ShoppaKing", "Sticks", "Trash", "Tree",
       
   744 		"TrophyRace"
       
   745 		}
       
   746 
       
   747 --local spriteArray = {
       
   748 --					{sprBigDigit,			"sprBigDigit",			0}
       
   749 --					}
       
   750 
       
   751 local spriteIDArray = {sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
       
   752 sprLag, sprArrow, sprBazookaShell, sprTargetP, sprBee,
       
   753 sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff,
       
   754 sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower,
       
   755 sprClusterBomb, sprClusterParticle, sprFlame,
       
   756 sprHorizont, sprHorizontL, sprHorizontR, sprSky, sprSkyL, sprSkyR,
       
   757 sprAMSlot, sprAMAmmos, sprAMAmmosBW, sprAMSlotKeys, sprAMCorners,
       
   758 sprFinger, sprAirBomb, sprAirplane, sprAmAirplane, sprAmGirder,
       
   759 sprHHTelepMask, sprSwitch, sprParachute, sprTarget, sprRopeNode,
       
   760 sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR,
       
   761 
       
   762 sprFireButton, sprArrowUp, sprArrowDown, sprArrowLeft, sprArrowRight,
       
   763 sprJumpWidget, sprAMWidget, sprPauseButton, sprTimerButton, sprTargetButton,
       
   764 
       
   765 sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun,
       
   766 sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer,
       
   767 sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath,
       
   768 sprShotgun, sprDEagle, sprHHIdle, sprMortar, sprTurnsLeft,
       
   769 sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave,
       
   770 sprHurrah, sprLemonade, sprShrug, sprJuggle, sprExplPart, sprExplPart2,
       
   771 sprCakeWalk, sprCakeDown, sprWatermelon,
       
   772 sprEvilTrace, sprHellishBomb, sprSeduction, sprDress,
       
   773 sprCensored, sprDrill, sprHandDrill, sprHandBallgun, sprBalls,
       
   774 sprPlane, sprHandPlane, sprUtility, sprInvulnerable, sprVampiric, sprGirder,
       
   775 sprSpeechCorner, sprSpeechEdge, sprSpeechTail,
       
   776 sprThoughtCorner, sprThoughtEdge, sprThoughtTail,
       
   777 sprShoutCorner, sprShoutEdge, sprShoutTail,
       
   778 sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov,
       
   779 sprSmoke, sprSmokeWhite, sprShell, sprDust, sprSnowDust, sprExplosives, sprExplosivesRoll,
       
   780 sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction,
       
   781 sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster,
       
   782 sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp,
       
   783 sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee,
       
   784 sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal,
       
   785 sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote,
       
   786 sprSMineOff, sprSMineOn, sprHandSMine, sprHammer,
       
   787 sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb,
       
   788 sprBulletHit, sprSnowball, sprHandSnowball, sprSnow,
       
   789 sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet, sprTardis,
       
   790 sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog, sprAmRubber, sprBoing}
       
   791 
       
   792 
       
   793 local spriteTextArray = {"sprWater", "sprCloud", "sprBomb", "sprBigDigit", "sprFrame",
       
   794 "sprLag", "sprArrow", "sprBazookaShell", "sprTargetP", "sprBee",
       
   795 "sprSmokeTrace", "sprRopeHook", "sprExplosion50", "sprMineOff",
       
   796 "sprMineOn", "sprMineDead", "sprCase", "sprFAid", "sprDynamite", "sprPower",
       
   797 "sprClusterBomb", "sprClusterParticle", "sprFlame", "sprHorizont",
       
   798 "sprHorizontL", "sprHorizontR", "sprSky", "sprSkyL", "sprSkyR", "sprAMSlot",
       
   799 "sprAMAmmos", "sprAMAmmosBW", "sprAMSlotKeys", "sprAMCorners", "sprFinger",
       
   800 "sprAirBomb", "sprAirplane", "sprAmAirplane", "sprAmGirder", "sprHHTelepMask",
       
   801  "sprSwitch", "sprParachute", "sprTarget", "sprRopeNode", "sprQuestion",
       
   802  "sprPowerBar", "sprWindBar", "sprWindL", "sprWindR", "sprFireButton",
       
   803  "sprArrowUp", "sprArrowDown", "sprArrowLeft", "sprArrowRight", "sprJumpWidget",
       
   804  "sprAMWidget", "sprPauseButton", "sprTimerButton", "sprTargetButton",
       
   805  "sprFlake", "sprHandRope", "sprHandBazooka", "sprHandShotgun",
       
   806  "sprHandDEagle", "sprHandAirAttack", "sprHandBaseball", "sprPHammer",
       
   807  "sprHandBlowTorch", "sprBlowTorch", "sprTeleport", "sprHHDeath", "sprShotgun",
       
   808  "sprDEagle", "sprHHIdle", "sprMortar", "sprTurnsLeft", "sprKamikaze", "sprWhip",
       
   809  "sprKowtow", "sprSad", "sprWave", "sprHurrah", "sprLemonade", "sprShrug",
       
   810  "sprJuggle", "sprExplPart", "sprExplPart2", "sprCakeWalk", "sprCakeDown",
       
   811  "sprWatermelon", "sprEvilTrace", "sprHellishBomb", "sprSeduction", "sprDress",
       
   812  "sprCensored", "sprDrill", "sprHandDrill", "sprHandBallgun", "sprBalls", "sprPlane",
       
   813  "sprHandPlane", "sprUtility", "sprInvulnerable", "sprVampiric", "sprGirder",
       
   814  "sprSpeechCorner", "sprSpeechEdge", "sprSpeechTail", "sprThoughtCorner",
       
   815  "sprThoughtEdge", "sprThoughtTail", "sprShoutCorner", "sprShoutEdge",
       
   816  "sprShoutTail", "sprSniperRifle", "sprBubbles", "sprJetpack", "sprHealth",
       
   817  "sprHandMolotov", "sprMolotov", "sprSmoke", "sprSmokeWhite", "sprShell", "sprDust",
       
   818  "sprSnowDust", "sprExplosives", "sprExplosivesRoll", "sprAmTeleport", "sprSplash",
       
   819  "sprDroplet", "sprBirdy", "sprHandCake", "sprHandConstruction", "sprHandGrenade",
       
   820  "sprHandMelon", "sprHandMortar", "sprHandSkip", "sprHandCluster", "sprHandDynamite",
       
   821  "sprHandHellish", "sprHandMine", "sprHandSeduction", "sprHandVamp", "sprBigExplosion",
       
   822  "sprSmokeRing", "sprBeeTrace", "sprEgg", "sprTargetBee", "sprHandBee", "sprFeather",
       
   823  "sprPiano", "sprHandSineGun", "sprPortalGun", "sprPortal", "sprCheese", "sprHandCheese",
       
   824  "sprHandFlamethrower", "sprChunk", "sprNote", "sprSMineOff", "sprSMineOn", "sprHandSMine",
       
   825  "sprHammer", "sprHandResurrector", "sprCross", "sprAirDrill", "sprNapalmBomb", "sprBulletHit",
       
   826  "sprSnowball", "sprHandSnowball", "sprSnow", "sprSDFlake", "sprSDWater", "sprSDCloud",
       
   827  "sprSDSplash", "sprSDDroplet", "sprTardis", "sprSlider", "sprBotlevels", "sprHandKnife",
       
   828  "sprKnife", "sprStar", "sprIceTexture", "sprIceGun", "sprFrozenHog", "sprAmRubber", "sprBoing"}
       
   829 
       
   830  local reducedSpriteIDArray = {
   593  local reducedSpriteIDArray = {
   831   sprAmRubber, sprAmGirder, sprAMSlot, sprAMAmmos, sprAMAmmosBW, sprAMCorners, sprHHTelepMask, sprTurnsLeft,
   594   sprAmRubber, sprAmGirder, sprAMSlot, sprAMAmmos, sprAMAmmosBW, sprAMCorners, sprHHTelepMask, sprTurnsLeft,
   832   sprSpeechCorner, sprSpeechEdge, sprSpeechTail, sprThoughtCorner, sprThoughtEdge, sprThoughtTail, sprShoutCorner,
   595   sprSpeechCorner, sprSpeechEdge, sprSpeechTail, sprThoughtCorner, sprThoughtEdge, sprThoughtTail, sprShoutCorner,
   833   sprShoutEdge, sprShoutTail, sprBotlevels, sprIceTexture, sprCustom1, sprCustom2, }
   596   sprShoutEdge, sprShoutTail, sprBotlevels, sprIceTexture, sprCustom1, sprCustom2, }
   834 
   597 
   893 local CGR = 1 -- current girder rotation, we actually need this as HW remembers what rotation you last used
   656 local CGR = 1 -- current girder rotation, we actually need this as HW remembers what rotation you last used
   894 
   657 
   895 local placedX = {} -- x coord of placed object
   658 local placedX = {} -- x coord of placed object
   896 local placedY = {} -- y coord of placed object
   659 local placedY = {} -- y coord of placed object
   897 local placedSpec = {} -- this is different depending on what was placed, for mines it is their time, for crates it is their content, (for girders/rubbers it used to be their rotation, and for sprites, their name, but this has been moved to different variables to allow more complex / smooth editing)
   660 local placedSpec = {} -- this is different depending on what was placed, for mines it is their time, for crates it is their content, (for girders/rubbers it used to be their rotation, and for sprites, their name, but this has been moved to different variables to allow more complex / smooth editing)
   898 --local placedSuperSpec = {} -- used to be used by girders/rubbers/sprites for their landFlag
       
   899 local placedType = {} -- what kind of object was placed: mine, crate, girder, rubber, barrel, etc.
   661 local placedType = {} -- what kind of object was placed: mine, crate, girder, rubber, barrel, etc.
   900 
   662 
   901 local placedTint = {} -- only girders/rubbers/sprites use this, it is their tint / colouration
   663 local placedTint = {} -- only girders/rubbers/sprites use this, it is their tint / colouration
   902 local placedSprite = {} -- what sprite was placed
   664 local placedSprite = {} -- what sprite was placed
   903 local placedFrame = {} -- what frame of sprite was placed (rotation for girders / rubber)
   665 local placedFrame = {} -- what frame of sprite was placed (rotation for girders / rubber)
   911 local closestDist
   673 local closestDist
   912 local closestGear = nil
   674 local closestGear = nil
   913 local closestSpriteID = nil
   675 local closestSpriteID = nil
   914 
   676 
   915 ------------------------
   677 ------------------------
   916 -- menu shite (more or less unused currently)
       
   917 ------------------------
       
   918 --local menuEnabled = false
       
   919 --local menuIndex = 1
       
   920 --local menu = {}
       
   921 --local subMenu = {}
       
   922 --local sMI = 1 -- sub menu index
       
   923 --local preMenuCfg
       
   924 --local postMenuCfg
       
   925 --local initMenu	=	{
       
   926 --					{"Selected Menu",	"Initialisation Menu"},
       
   927 --					{"List of Gameflags",	""},
       
   928 --					{"List of Gameflags",	""}
       
   929 --					}
       
   930 
       
   931 ------------------------
       
   932 -- SOME GENERAL METHODS
   678 -- SOME GENERAL METHODS
   933 ------------------------
   679 ------------------------
   934 
   680 
   935 function BoolToString(boo)
   681 function BoolToString(boo)
   936 	if boo == true then
   682 	if boo == true then
   967 end
   713 end
   968 
   714 
   969 -- you know you could probably add multiple layers to this to get more points
   715 -- you know you could probably add multiple layers to this to get more points
   970 -- after the first set is expended have the last 1 be 127
   716 -- after the first set is expended have the last 1 be 127
   971 -- and then increment some other counter so like
   717 -- and then increment some other counter so like
   972 
       
   973 -- bobCounter = 1
       
   974 -- specialPoint(5)
       
   975 -- specialPoint(127)
       
   976 -- specialPoint(5)
       
   977 
       
   978 -- if BobCounter = 1 then
       
   979 -- 		if specialPointsFlag == 5 then createMine
       
   980 --		if specialPointFlag == 127 then bobCounter = 2
       
   981 -- elseif bobCounter == 2 then
       
   982 -- 		if specialPointsFlag == 5 then createExlosives
       
   983 -- end
       
   984 --
       
   985 
   718 
   986 -- this function interprets special points that have been embedded into an HWPMAP
   719 -- this function interprets special points that have been embedded into an HWPMAP
   987 function InterpretPoints()
   720 function InterpretPoints()
   988 
   721 
   989 	-- flags run from 0 to 127
   722 	-- flags run from 0 to 127
  1057 
   790 
  1058 		--79-82 (reserved for future wep crates)
   791 		--79-82 (reserved for future wep crates)
  1059 		--89,88,87,86 and 85,84,83,82 (reserved for the 2 custom sprites and their landflags)
   792 		--89,88,87,86 and 85,84,83,82 (reserved for the 2 custom sprites and their landflags)
  1060 
   793 
  1061 		--90-99 reserved for scripted structures
   794 		--90-99 reserved for scripted structures
  1062 		--[[elseif specialPointsFlag[i] == 90 then
       
  1063 			--PlaceStruc("generator")
       
  1064 		elseif specialPointsFlag[i] == 91 then
       
  1065 			--PlaceStruc("healingstation")
       
  1066 		elseif specialPointsFlag[i] == 92 then
       
  1067 			--PlaceStruc("respawner")
       
  1068 		elseif specialPointsFlag[i] == 93 then
       
  1069 			--PlaceStruc("teleportationnode")
       
  1070 		elseif specialPointsFlag[i] == 94 then
       
  1071 			--PlaceStruc("biofilter")
       
  1072 		elseif specialPointsFlag[i] == 95 then
       
  1073 			--PlaceStruc("supportstation")
       
  1074 		elseif specialPointsFlag[i] == 96 then
       
  1075 			--PlaceStruc("constructionstation")
       
  1076 		elseif specialPointsFlag[i] == 97 then
       
  1077 			--PlaceStruc("reflectorshield")
       
  1078 		elseif specialPointsFlag[i] == 98 then
       
  1079 			--PlaceStruc("weaponfilter")]]
       
  1080 
   795 
  1081 		elseif specialPointsFlag[i] == 98 then
   796 		elseif specialPointsFlag[i] == 98 then
  1082 			portalDistance = div(specialPointsX[i],5)
   797 			portalDistance = div(specialPointsX[i],5)
  1083 			ufoFuel = specialPointsY[i]
   798 			ufoFuel = specialPointsY[i]
  1084 
   799 
  1153 
   868 
  1154 	end
   869 	end
  1155 
   870 
  1156 end
   871 end
  1157 
   872 
  1158 ----------------------------
       
  1159 -- just fucking around
       
  1160 ----------------------------
       
  1161 -- ancient stuff that no longer has any relevance
       
  1162 --[[
       
  1163 function BoostVeloctiy(gear)
       
  1164 
       
  1165 	if (GetGearType(gear) == gtSMine) or
       
  1166 		(GetGearType(gear) == gtMine) or
       
  1167 		(GetGearType(gear) == gtHedgehog) then
       
  1168 
       
  1169 			dx,dy = GetGearVelocity(gear)
       
  1170 			SetGearVelocity(gear,dx*1.5,dy*1.5)
       
  1171 		end
       
  1172 
       
  1173 end
       
  1174 
       
  1175 -- use this stuff when you want to get some idea of land and/or blow up /everything/
       
  1176 function CheckGrenades(gear)
       
  1177 
       
  1178 	if GetGearType(gear) == gtGrenade then
       
  1179 		dx, dy = GetGearVelocity(gear)
       
  1180 		if (dy == 0) then
       
  1181 
       
  1182 		else
       
  1183 			DeleteGear(gear)
       
  1184 		end
       
  1185 	end
       
  1186 
       
  1187 end
       
  1188 
       
  1189 function BlowShitUpPartTwo()
       
  1190 
       
  1191 	destroyMap = false
       
  1192 	runOnGears(CheckGrenades)
       
  1193 
       
  1194 end
       
  1195 
       
  1196 function BlowShitUp()
       
  1197 
       
  1198 	destroyMap = true
       
  1199 
       
  1200 	mapWidth = 4096
       
  1201 	mapHeight = 2048
       
  1202 	blockSize = 50
       
  1203 
       
  1204 	mY = 0
       
  1205 
       
  1206 	while (mY < WaterLine) do
       
  1207 
       
  1208 		mX = 0
       
  1209 		mY = mY + 1*blockSize
       
  1210 		while (mX < mapWidth) do
       
  1211 
       
  1212 			mX = mX + (1*blockSize)
       
  1213 			gear = AddGear(mX, mY, gtGrenade, 0, 0, 0, 5000)
       
  1214 			SetState(gear, bor(GetState(gear),gstInvisible) )
       
  1215 
       
  1216 		end
       
  1217 
       
  1218 	end
       
  1219 
       
  1220 end]]
       
  1221 
       
  1222 
       
  1223 -- you know, using this it might be possible to have a self destructing track,
       
  1224 -- or a moving one.
       
  1225 -- edit: this was from the gold old days before it was possible to erase sprites)
       
  1226 --[[function BoomGirder(x,y,rot)
       
  1227 	girTime = 1
       
  1228 	if rot < 4 then
       
  1229 				AddGear(x, y, gtGrenade, 0, 0, 0, girTime)
       
  1230 	elseif rot == 4 then
       
  1231 				g = AddGear(x-45, y, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1232 				g = AddGear(x-30, y, gtGrenade, 0, 0, 0, girTime)
       
  1233 				g = AddGear(x, y, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1234 				g = AddGear(x+30, y, gtGrenade, 0, 0, 0, girTime)
       
  1235 				g = AddGear(x+45, y, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1236 	elseif rot == 5 then ------- diag
       
  1237 				g = AddGear(x+45, y+45, gtGrenade, 0, 0, 0, girTime) --n
       
  1238 				g = AddGear(x+30, y+30, gtGrenade, 0, 0, 0, girTime)
       
  1239 				g = AddGear(x, y, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1240 				g = AddGear(x-30, y-30, gtGrenade, 0, 0, 0, girTime)
       
  1241 				g = AddGear(x-45, y-45, gtGrenade, 0, 0, 0, girTime) --n
       
  1242 	elseif rot == 6 then
       
  1243 				g = AddGear(x, y-45, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1244 				g = AddGear(x, y+30, gtGrenade, 0, 0, 0, girTime)
       
  1245 				g = AddGear(x, y, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1246 				g = AddGear(x, y-30, gtGrenade, 0, 0, 0, girTime)
       
  1247 				g = AddGear(x, y+45, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1248 	elseif rot == 7 then -------
       
  1249 				g = AddGear(x+45, y-45, gtGrenade, 0, 0, 0, girTime) --n
       
  1250 				g = AddGear(x+30, y-30, gtGrenade, 0, 0, 0, girTime)
       
  1251 				g = AddGear(x, y, gtGrenade, 0, 0, 0, girTime) -- needed?
       
  1252 				g = AddGear(x-30, y+30, gtGrenade, 0, 0, 0, girTime)
       
  1253 				g = AddGear(x-45, y+45, gtGrenade, 0, 0, 0, girTime) --n
       
  1254 	end
       
  1255 end]]
       
  1256 
       
  1257 --[[function SpecialGirderPlacement(x,y,rot)
       
  1258 
       
  1259 	PlaceGirder(x, y, rot)
       
  1260 	girTime = 10000
       
  1261 
       
  1262 	if rot < 4 then
       
  1263 				AddGear(x, y, gtGrenade, 0, 0, 0, girTime)
       
  1264 	elseif rot == 4 then
       
  1265 				g = AddGear(x-30, y, gtGrenade, 0, 0, 0, girTime)
       
  1266 				g = AddGear(x+30, y, gtGrenade, 0, 0, 0, girTime)
       
  1267 	elseif rot == 5 then -------
       
  1268 				g = AddGear(x+30, y+30, gtGrenade, 0, 0, 0, girTime)
       
  1269 				g = AddGear(x-30, y-30, gtGrenade, 0, 0, 0, girTime)
       
  1270 	elseif rot == 6 then
       
  1271 				g = AddGear(x, y+30, gtGrenade, 0, 0, 0, girTime)
       
  1272 				g = AddGear(x, y-30, gtGrenade, 0, 0, 0, girTime)
       
  1273 	elseif rot == 7 then -------
       
  1274 				g = AddGear(x+30, y-30, gtGrenade, 0, 0, 0, girTime)
       
  1275 				g = AddGear(x-30, y+30, gtGrenade, 0, 0, 0, girTime)
       
  1276 	end
       
  1277 
       
  1278 end]]
       
  1279 
       
  1280 --shoppabalance crap
   873 --shoppabalance crap
  1281 function AddShoppaPoint(x,y,c)
   874 function AddShoppaPoint(x,y,c)
  1282 	table.insert(shoppaPX, x)
   875 	table.insert(shoppaPX, x)
  1283 	table.insert(shoppaPY, y)
   876 	table.insert(shoppaPY, y)
  1284 	table.insert(shoppaPR, c)
   877 	table.insert(shoppaPR, c)
  1303 -----------------------------------------
   896 -----------------------------------------
  1304 
   897 
  1305 function GetClosestGear()
   898 function GetClosestGear()
  1306 	closestDist = 999999999
   899 	closestDist = 999999999
  1307 	closestGear = nil
   900 	closestGear = nil
  1308 	--sGear = nil
       
  1309 	runOnGears(SelectGear)
   901 	runOnGears(SelectGear)
  1310 	return(closestGear)
   902 	return(closestGear)
  1311 end
   903 end
  1312 
   904 
  1313 function SelectGear(gear)
   905 function SelectGear(gear)
  1369 
   961 
  1370 	else
   962 	else
  1371 		placedType[placedCount] = loc("Sprite Placement Mode")
   963 		placedType[placedCount] = loc("Sprite Placement Mode")
  1372 	end
   964 	end
  1373 
   965 
  1374 	--placedLandFlags[placedCount] = pLandFlags
       
  1375 	if pLandFlags == lfIce then
   966 	if pLandFlags == lfIce then
  1376 		placedLandFlags[placedCount] = "lfIce"
   967 		placedLandFlags[placedCount] = "lfIce"
  1377 	elseif pLandFlags == lfIndestructible then
   968 	elseif pLandFlags == lfIndestructible then
  1378 		placedLandFlags[placedCount] = "lfIndestructible"
   969 		placedLandFlags[placedCount] = "lfIndestructible"
  1379 	elseif pLandFlags == lfBouncy then
   970 	elseif pLandFlags == lfBouncy then
  1380 		placedLandFlags[placedCount] = "lfBouncy"
   971 		placedLandFlags[placedCount] = "lfBouncy"
  1381 	else
   972 	else
  1382 		placedLandFlags[placedCount] = "lfNormal"
   973 		placedLandFlags[placedCount] = "lfNormal"
  1383 	end
   974 	end
  1384 
       
  1385 	--placedSuperSpec[placedCount] = nil
       
  1386 
   975 
  1387 	placedTint[placedCount] = pTint
   976 	placedTint[placedCount] = pTint
  1388 	placedFrame[placedCount] = pFrame
   977 	placedFrame[placedCount] = pFrame
  1389 
   978 
  1390 	placedSprite[placedCount] = pSprite
   979 	placedSprite[placedCount] = pSprite
  1457                     placedLandFlags[closestSpriteID])
  1046                     placedLandFlags[closestSpriteID])
  1458 
  1047 
  1459 		placedX[closestSpriteID] = nil
  1048 		placedX[closestSpriteID] = nil
  1460 		placedY[closestSpriteID] = nil
  1049 		placedY[closestSpriteID] = nil
  1461 		placedSpec[closestSpriteID] = nil
  1050 		placedSpec[closestSpriteID] = nil
  1462 		--placedSuperSpec[closestSpriteID] = nil
       
  1463 		placedType[closestSpriteID] = nil
  1051 		placedType[closestSpriteID] = nil
  1464 		placedTint[closestSpriteID] = nil
  1052 		placedTint[closestSpriteID] = nil
  1465 		placedSprite[closestSpriteID] = nil
  1053 		placedSprite[closestSpriteID] = nil
  1466 		placedFrame[closestSpriteID] = nil
  1054 		placedFrame[closestSpriteID] = nil
  1467 		placedLandFlags[closestSpriteID] = nil
  1055 		placedLandFlags[closestSpriteID] = nil
  1483 				d = ( (q*q) + (w*w) )
  1071 				d = ( (q*q) + (w*w) )
  1484 				if d < closestDist then
  1072 				if d < closestDist then
  1485 					closestDist = d
  1073 					closestDist = d
  1486 					closestSpriteID = i
  1074 					closestSpriteID = i
  1487 
  1075 
  1488 					--newTint = placedTint[i]
       
  1489 
       
  1490 					SetVisualGearValues(sSprite, placedX[i], placedY[i], 0, 0, nil, placedFrame[i], 10000, placedSprite[i], 10000, newTint )
  1076 					SetVisualGearValues(sSprite, placedX[i], placedY[i], 0, 0, nil, placedFrame[i], 10000, placedSprite[i], 10000, newTint )
  1491 
  1077 
  1492 				end
  1078 				end
  1493 		end
  1079 		end
  1494 	end
  1080 	end
  1496 	if closestSpriteID ~= nil then
  1082 	if closestSpriteID ~= nil then
  1497 		DeleteVisualGear(placedSpec[closestSpriteID])
  1083 		DeleteVisualGear(placedSpec[closestSpriteID])
  1498 		placedX[closestSpriteID] = nil
  1084 		placedX[closestSpriteID] = nil
  1499 		placedY[closestSpriteID] = nil
  1085 		placedY[closestSpriteID] = nil
  1500 		placedSpec[closestSpriteID] = nil
  1086 		placedSpec[closestSpriteID] = nil
  1501 		--placedSuperSpec[closestSpriteID] = nil
       
  1502 		placedType[closestSpriteID] = nil
  1087 		placedType[closestSpriteID] = nil
  1503 		placedTint[closestSpriteID] = nil
  1088 		placedTint[closestSpriteID] = nil
  1504 		placedSprite[closestSpriteID] = nil
  1089 		placedSprite[closestSpriteID] = nil
  1505 		placedFrame[closestSpriteID] = nil
  1090 		placedFrame[closestSpriteID] = nil
  1506 		placedLandFlags[closestSpriteID] = nil
  1091 		placedLandFlags[closestSpriteID] = nil
  1516 
  1101 
  1517 	placedX[placedCount] = x
  1102 	placedX[placedCount] = x
  1518 	placedY[placedCount] = y
  1103 	placedY[placedCount] = y
  1519 	placedType[placedCount] = cat[cIndex]
  1104 	placedType[placedCount] = cat[cIndex]
  1520 	placedSpec[placedCount] = pMode[pIndex]
  1105 	placedSpec[placedCount] = pMode[pIndex]
  1521 	--placedSuperSpec[placedCount] = nil
       
  1522 	placedTint[placedCount] = nil
  1106 	placedTint[placedCount] = nil
  1523 	placedFrame[placedCount] = nil
  1107 	placedFrame[placedCount] = nil
  1524 	placedLandFlags[placedCount] = nil
  1108 	placedLandFlags[placedCount] = nil
  1525 	placedSprite[placedCount] = nil
  1109 	placedSprite[placedCount] = nil
  1526 	placedHWMapFlag[placedCount] = nil
  1110 	placedHWMapFlag[placedCount] = nil
  1548 
  1132 
  1549 		if superDelete == false then
  1133 		if superDelete == false then
  1550 			placedFrame[placedCount] = CGR
  1134 			placedFrame[placedCount] = CGR
  1551 			placedSprite[placedCount] = sprAmRubber
  1135 			placedSprite[placedCount] = sprAmRubber
  1552 
  1136 
  1553 			--CallPlaceSprite(placedCount)
       
  1554 			--new ermagerd
  1137 			--new ermagerd
  1555 			placedLandFlags[placedCount] = "lfBouncy"
  1138 			placedLandFlags[placedCount] = "lfBouncy"
  1556 			placedTint[placedCount] = 255 + (255*0x100) + (255*0x10000) + (255*0x1000000) -- A BGR
  1139 			placedTint[placedCount] = 255 + (255*0x100) + (255*0x10000) + (255*0x1000000) -- A BGR
  1557 			PlaceSprite(placedX[placedCount], placedY[placedCount], placedSprite[placedCount], placedFrame[placedCount],
  1140 			PlaceSprite(placedX[placedCount], placedY[placedCount], placedSprite[placedCount], placedFrame[placedCount],
  1558 				placedTint[placedCount],
  1141 				placedTint[placedCount],
  1654 	elseif cat[cIndex] == loc("Sprite Modification Mode") then
  1237 	elseif cat[cIndex] == loc("Sprite Modification Mode") then
  1655 
  1238 
  1656 		SelectClosestSprite()
  1239 		SelectClosestSprite()
  1657 
  1240 
  1658 		if closestSpriteID ~= nil then
  1241 		if closestSpriteID ~= nil then
  1659 			-- we have a sprite selected somewhere
       
  1660 			--if pMode[pIndex] == "Sprite Selection Mode" then
       
  1661 				-- sprite is now selected, good job
       
  1662 			--elseif pMode[pIndex] == "LandFlag Modification Mode" then
       
  1663 			if pMode[pIndex] == loc("LandFlag Modification Mode") then
  1242 			if pMode[pIndex] == loc("LandFlag Modification Mode") then
  1664 				EraseSprite(placedX[closestSpriteID], placedY[closestSpriteID], placedSprite[closestSpriteID], placedFrame[closestSpriteID], nil, nil, nil, nil, placedLandFlags[closestSpriteID])
  1243 				EraseSprite(placedX[closestSpriteID], placedY[closestSpriteID], placedSprite[closestSpriteID], placedFrame[closestSpriteID], nil, nil, nil, nil, placedLandFlags[closestSpriteID])
  1665 				CallPlaceSprite(closestSpriteID)
  1244 				CallPlaceSprite(closestSpriteID)
  1666 				closestSpriteID = nil
  1245 				closestSpriteID = nil
  1667 				SetVisualGearValues(sSprite, 0, 0, 0, 0, 0, 1, 10000, sprAmGirder, 10000, 0x00000000 )
  1246 				SetVisualGearValues(sSprite, 0, 0, 0, 0, 0, 1, 10000, sprAmGirder, 10000, 0x00000000 )
  1745 	pMode = {}
  1324 	pMode = {}
  1746 
  1325 
  1747 	if cat[cIndex] == loc("Girder Placement Mode") then
  1326 	if cat[cIndex] == loc("Girder Placement Mode") then
  1748 		pIndex = CGR
  1327 		pIndex = CGR
  1749 		pMode = {loc("Girder")}
  1328 		pMode = {loc("Girder")}
  1750 	--	pCount = 1
       
  1751 	elseif cat[cIndex] == loc("Rubber Placement Mode") then
  1329 	elseif cat[cIndex] == loc("Rubber Placement Mode") then
  1752 		pIndex = CGR
  1330 		pIndex = CGR
  1753 		pMode = {loc("Rubber")}
  1331 		pMode = {loc("Rubber")}
  1754 		landType = lfBouncy -- for now, let's not allow anything else (-- fairly new addition)
  1332 		landType = lfBouncy -- for now, let's not allow anything else (-- fairly new addition)
  1755 	--	pCount = 1???
       
  1756 	elseif cat[cIndex] == loc("Target Placement Mode") then
  1333 	elseif cat[cIndex] == loc("Target Placement Mode") then
  1757 		pMode = {loc("Standard Target")}
  1334 		pMode = {loc("Standard Target")}
  1758 	elseif cat[cIndex] == loc("Cleaver Placement Mode") then
  1335 	elseif cat[cIndex] == loc("Cleaver Placement Mode") then
  1759 		pMode = {loc("Standard Cleaver")}
  1336 		pMode = {loc("Standard Cleaver")}
  1760 	elseif cat[cIndex] == loc("Barrel Placement Mode") then
  1337 	elseif cat[cIndex] == loc("Barrel Placement Mode") then
  1761 		pMode = {60,80,100,120,160,200,240,1,10,20,30,40,50}
  1338 		pMode = {60,80,100,120,160,200,240,1,10,20,30,40,50}
  1762 	elseif cat[cIndex] == loc("Health Crate Placement Mode") then
  1339 	elseif cat[cIndex] == loc("Health Crate Placement Mode") then
  1763 		pMode = {25,30,40,50,75,100,150,200,5,10,15,20}
  1340 		pMode = {25,30,40,50,75,100,150,200,5,10,15,20}
  1764 	elseif cat[cIndex] == loc("Weapon Crate Placement Mode") then
  1341 	elseif cat[cIndex] == loc("Weapon Crate Placement Mode") then
  1765 		for i = 1, #atkArray do
  1342 		for i = 1, #atkArray do
  1766 			pMode[i] = atkArray[i][4] --pMode[i] = atkArray[i][2]
  1343 			pMode[i] = atkArray[i][4]
  1767 		end
  1344 		end
  1768 	elseif cat[cIndex] == loc("Utility Crate Placement Mode") then
  1345 	elseif cat[cIndex] == loc("Utility Crate Placement Mode") then
  1769 		for i = 1, #utilArray do
  1346 		for i = 1, #utilArray do
  1770 			pMode[i] = utilArray[i][4] --pMode[i] = utilArray[i][2]
  1347 			pMode[i] = utilArray[i][4]
  1771 		end
  1348 		end
  1772 	elseif cat[cIndex] == loc("Mine Placement Mode") then
  1349 	elseif cat[cIndex] == loc("Mine Placement Mode") then
  1773 		pMode = {3000,4000,5000,0,1000,2000}
  1350 		pMode = {3000,4000,5000,0,1000,2000}
  1774 	elseif cat[cIndex] == loc("Dud Mine Placement Mode") then
  1351 	elseif cat[cIndex] == loc("Dud Mine Placement Mode") then
  1775 		pMode = {36,48,60,72,96,1,6,12,18,24}
  1352 		pMode = {36,48,60,72,96,1,6,12,18,24}
  1791 		pMode = { {100, "set"}, {125, "set"}, {150, "set"}, {200, "set"}, {300, "set"}, {1000, "set"},
  1368 		pMode = { {100, "set"}, {125, "set"}, {150, "set"}, {200, "set"}, {300, "set"}, {1000, "set"},
  1792 			{"-100", "mod"}, {"-10", "mod"}, {"-1", "mod"}, {"+1", "mod"}, {"+10", "mod"}, {"+100", "mod"},
  1369 			{"-100", "mod"}, {"-10", "mod"}, {"-1", "mod"}, {"+1", "mod"}, {"+10", "mod"}, {"+100", "mod"},
  1793 			{1, "set"}, {10, "set"}, {15, "set"}, {20, "set"}, {25, "set"}, {30, "set"}, {40, "set"}, {50, "set"}, {75, "set"}, 
  1370 			{1, "set"}, {10, "set"}, {15, "set"}, {20, "set"}, {25, "set"}, {30, "set"}, {40, "set"}, {50, "set"}, {75, "set"}, 
  1794 } 
  1371 } 
  1795 	elseif cat[cIndex] == loc("Sprite Modification Mode") then
  1372 	elseif cat[cIndex] == loc("Sprite Modification Mode") then
  1796 		--pMode = {"Sprite Selection Mode","LandFlag Modification Mode","Sprite Erasure Mode"}
       
  1797 		pMode = {loc("LandFlag Modification Mode"),loc("Sprite Erasure Mode")}
  1373 		pMode = {loc("LandFlag Modification Mode"),loc("Sprite Erasure Mode")}
  1798 	elseif cat[cIndex] == loc("Sprite Testing Mode") or cat[cIndex] == loc("Sprite Placement Mode") then
  1374 	elseif cat[cIndex] == loc("Sprite Testing Mode") or cat[cIndex] == loc("Sprite Placement Mode") then
  1799 		--for i = 1, #spriteTextArray do
       
  1800 		--	pMode[i] = spriteTextArray[i]
       
  1801 		--end
       
  1802 		for i = 1, #reducedSpriteTextArray do
  1375 		for i = 1, #reducedSpriteTextArray do
  1803 			pMode[i] = reducedSpriteTextArray[i]
  1376 			pMode[i] = reducedSpriteTextArray[i]
  1804 		end
  1377 		end
  1805 	elseif cat[cIndex] == loc("Waypoint Placement Mode") then
  1378 	elseif cat[cIndex] == loc("Waypoint Placement Mode") then
  1806 		pMode = {loc("Standard Waypoint"), loc("Waypoint Deletion Mode")}
  1379 		pMode = {loc("Standard Waypoint"), loc("Waypoint Deletion Mode")}
  1828 end
  1401 end
  1829 
  1402 
  1830 -- When you save your level, this function
  1403 -- When you save your level, this function
  1831 -- generates the AddTeam and AddHog function calls for onGameInit()
  1404 -- generates the AddTeam and AddHog function calls for onGameInit()
  1832 function GetDataForSavingHogs(gear)
  1405 function GetDataForSavingHogs(gear)
  1833 
       
  1834 	--AddTeam(teamname, color, grave, fort, voicepack, flag)
       
  1835 	--AddHog(hogname, botlevel, health, hat)
       
  1836 
  1406 
  1837 	--this is a quick hack so that the human team(s) will always be
  1407 	--this is a quick hack so that the human team(s) will always be
  1838 	--given the first move ahead of the AI
  1408 	--given the first move ahead of the AI
  1839 	local tempDataList = {}
  1409 	local tempDataList = {}
  1840 	if GetHogLevel(gear) == 0 then
  1410 	if GetHogLevel(gear) == 0 then
  1862 		-- no match, just give him a default colour from the array, then
  1432 		-- no match, just give him a default colour from the array, then
  1863 		if tColor == 0x00000000 then
  1433 		if tColor == 0x00000000 then
  1864 			tColor = colorArray[teamCounter][2]
  1434 			tColor = colorArray[teamCounter][2]
  1865 		end
  1435 		end
  1866 
  1436 
  1867 
       
  1868 		-- there is used to be no way to read this data, so
       
  1869 		-- I was assigning teams a random grave, fort, flag and voice
       
  1870 		-- but now we should be able to get the real thing
       
  1871 		-- so let's do it if they haven't used one of the preset teams
       
  1872 		if getGearValue(gear,"grave") == nil then
  1437 		if getGearValue(gear,"grave") == nil then
  1873 			tFort = fortArray[1+GetRandom(#fortArray)]
  1438 			tFort = fortArray[1+GetRandom(#fortArray)]
  1874 			tGrave = GetHogGrave(gear)
  1439 			tGrave = GetHogGrave(gear)
  1875 			tFlag = GetHogFlag(gear)
  1440 			tFlag = GetHogFlag(gear)
  1876 			tVoice = GetHogVoicepack(gear)
  1441 			tVoice = GetHogVoicepack(gear)
  1877 			--tGrave = graveArray[1+GetRandom(#graveArray)]
       
  1878 			--tFlag = flagArray[1+GetRandom(#flagArray)]
       
  1879 			--tVoice = voiceArray[1+GetRandom(#voiceArray)]
       
  1880 		else
  1442 		else
  1881 			tGrave = getGearValue(gear,"grave")
  1443 			tGrave = getGearValue(gear,"grave")
  1882 			tFort = getGearValue(gear,"fort")
  1444 			tFort = getGearValue(gear,"fort")
  1883 			tFlag = getGearValue(gear,"flag")
  1445 			tFlag = getGearValue(gear,"flag")
  1884 			tVoice = getGearValue(gear,"voice")
  1446 			tVoice = getGearValue(gear,"voice")
  1889 		table.insert(tempDataList, "")
  1451 		table.insert(tempDataList, "")
  1890 		table.insert	(tempDataList,
  1452 		table.insert	(tempDataList,
  1891 						"	AddTeam(\"" ..
  1453 						"	AddTeam(\"" ..
  1892 						GetHogTeamName(gear) .."\"" ..
  1454 						GetHogTeamName(gear) .."\"" ..
  1893 						", " .. "\"" ..tColor .. "\"" ..
  1455 						", " .. "\"" ..tColor .. "\"" ..
  1894 						--		--", " .. colorArray[teamCounter][2] ..
       
  1895 						", " .. "\"" .. tGrave .. "\"" ..
  1456 						", " .. "\"" .. tGrave .. "\"" ..
  1896 						", " .. "\"" .. tFort .. "\"" ..
  1457 						", " .. "\"" .. tFort .. "\"" ..
  1897 						", " .. "\"" .. tVoice .. "\"" ..
  1458 						", " .. "\"" .. tVoice .. "\"" ..
  1898 						", " .. "\"" .. tFlag .. "\"" ..
  1459 						", " .. "\"" .. tFlag .. "\"" ..
  1899 						")"
  1460 						")"
  2386 	WriteLnToConsole("HedgewarsScriptLoad(\"/Scripts/Locale.lua\")")
  1947 	WriteLnToConsole("HedgewarsScriptLoad(\"/Scripts/Locale.lua\")")
  2387 	WriteLnToConsole("HedgewarsScriptLoad(\"/Scripts/Tracker.lua\")")
  1948 	WriteLnToConsole("HedgewarsScriptLoad(\"/Scripts/Tracker.lua\")")
  2388 
  1949 
  2389 	WriteLnToConsole("")
  1950 	WriteLnToConsole("")
  2390 	WriteLnToConsole("local hhs = {}")
  1951 	WriteLnToConsole("local hhs = {}")
  2391 	--WriteLnToConsole("local ufoGear = nil")
       
  2392 	WriteLnToConsole("")
  1952 	WriteLnToConsole("")
  2393 
  1953 
  2394 	WriteLnToConsole("local wepArray = {")
  1954 	WriteLnToConsole("local wepArray = {")
  2395 	WriteLnToConsole("		amBazooka, amBee, amMortar, amDrill, amSnowball,")
  1955 	WriteLnToConsole("		amBazooka, amBee, amMortar, amDrill, amSnowball,")
  2396 	WriteLnToConsole("		amGrenade, amClusterBomb, amMolotov, amWatermelon, amHellishBomb, amGasBomb,")
  1956 	WriteLnToConsole("		amGrenade, amClusterBomb, amMolotov, amWatermelon, amHellishBomb, amGasBomb,")
  2478 			"	LoadSprite(" ..
  2038 			"	LoadSprite(" ..
  2479 				placedX[i] ..", " ..
  2039 				placedX[i] ..", " ..
  2480 				placedY[i] ..", sprAmGirder, " ..
  2040 				placedY[i] ..", sprAmGirder, " ..
  2481 				placedFrame[i] ..			-- the rotation/frame
  2041 				placedFrame[i] ..			-- the rotation/frame
  2482 				", " ..
  2042 				", " ..
  2483 				placedTint[i] ..", " .. -- "nil, " .. -- color
  2043 				placedTint[i] ..", " .. -- color
  2484 				"nil, nil, nil, " ..
  2044 				"nil, nil, nil, " ..
  2485 				placedLandFlags[i] .. ")" --the landType
  2045 				placedLandFlags[i] .. ")" --the landType
  2486 				)
  2046 				)
  2487 			table.insert(hFlagList, "	" .. placedX[i] .. " " .. placedY[i] .. " " .. placedHWMapFlag[i])
  2047 			table.insert(hFlagList, "	" .. placedX[i] .. " " .. placedY[i] .. " " .. placedHWMapFlag[i])
  2488 			table.insert(previewDataList, "	PreviewGirder(" .. placedX[i] ..", " ..	placedY[i] .. ", " .. placedFrame[i] .. ")")
  2048 			table.insert(previewDataList, "	PreviewGirder(" .. placedX[i] ..", " ..	placedY[i] .. ", " .. placedFrame[i] .. ")")
  2495 				"	LoadSprite(" ..
  2055 				"	LoadSprite(" ..
  2496 				placedX[i] ..", " ..
  2056 				placedX[i] ..", " ..
  2497 				placedY[i] ..", sprAmRubber, " ..
  2057 				placedY[i] ..", sprAmRubber, " ..
  2498 				placedFrame[i] ..
  2058 				placedFrame[i] ..
  2499 				", " ..
  2059 				", " ..
  2500 				placedTint[i] ..", " .. -- "nil, " .. -- color
  2060 				placedTint[i] ..", " .. -- color
  2501 				"nil, nil, nil, " ..
  2061 				"nil, nil, nil, " ..
  2502 				"lfBouncy)" --placedLandFlags[i] .. ")" --the landType
  2062 				"lfBouncy)" --the landType
  2503 				)
  2063 				)
  2504 			table.insert(hFlagList, "	" .. placedX[i] .. " " .. placedY[i] .. " " .. placedHWMapFlag[i])
  2064 			table.insert(hFlagList, "	" .. placedX[i] .. " " .. placedY[i] .. " " .. placedHWMapFlag[i])
  2505 			table.insert(previewDataList, "	PreviewRubber(" .. placedX[i] ..", " ..	placedY[i] .. ", " .. placedFrame[i] .. ")")
  2065 			table.insert(previewDataList, "	PreviewRubber(" .. placedX[i] ..", " ..	placedY[i] .. ", " .. placedFrame[i] .. ")")
  2506 		end
  2066 		end
  2507 	end
  2067 	end
  2512 				"	LoadSprite(" ..
  2072 				"	LoadSprite(" ..
  2513 				placedX[i] ..", " ..
  2073 				placedX[i] ..", " ..
  2514 				placedY[i] ..", " .. placedSprite[i] .. ", " ..
  2074 				placedY[i] ..", " .. placedSprite[i] .. ", " ..
  2515 				placedFrame[i] .. -- I think this is the frame, can't remember
  2075 				placedFrame[i] .. -- I think this is the frame, can't remember
  2516 				", " ..
  2076 				", " ..
  2517 				placedTint[i] ..", " .. -- "nil, " .. -- color
  2077 				placedTint[i] ..", " .. -- color
  2518 				"nil, nil, nil, " ..
  2078 				"nil, nil, nil, " ..
  2519 				placedLandFlags[i] .. ")" --the landType
  2079 				placedLandFlags[i] .. ")" --the landType
  2520 				)
  2080 				)
  2521 		end
  2081 		end
  2522 	end
  2082 	end
  2647 	WriteLnToConsole("		if victoryObj == 1 then ")
  2207 	WriteLnToConsole("		if victoryObj == 1 then ")
  2648 	WriteLnToConsole("			vComment = loc(\"Destroy the red target\")")
  2208 	WriteLnToConsole("			vComment = loc(\"Destroy the red target\")")
  2649 	WriteLnToConsole("		else ")
  2209 	WriteLnToConsole("		else ")
  2650 	WriteLnToConsole("			vComment = loc(\"Destroy the red targets\")")
  2210 	WriteLnToConsole("			vComment = loc(\"Destroy the red targets\")")
  2651 	WriteLnToConsole("		end")
  2211 	WriteLnToConsole("		end")
  2652 --	WriteLnToConsole("	else")
       
  2653 --	WriteLnToConsole("		vComment = loc(\"Destroy the enemy.\")")
       
  2654 	WriteLnToConsole("	end")
  2212 	WriteLnToConsole("	end")
  2655 	WriteLnToConsole("")
  2213 	WriteLnToConsole("")
  2656 	WriteLnToConsole("	if collectObj > 0 then ")
  2214 	WriteLnToConsole("	if collectObj > 0 then ")
  2657 	WriteLnToConsole("		if collectObj == 1 then ")
  2215 	WriteLnToConsole("		if collectObj == 1 then ")
  2658 	WriteLnToConsole("			collectComment = loc(\"Collect the blue target\")")
  2216 	WriteLnToConsole("			collectComment = loc(\"Collect the blue target\")")
  2697 	WriteLnToConsole("")
  2255 	WriteLnToConsole("")
  2698 
  2256 
  2699 	WriteLnToConsole("")
  2257 	WriteLnToConsole("")
  2700 	WriteLnToConsole("function onGearAdd(gear)")
  2258 	WriteLnToConsole("function onGearAdd(gear)")
  2701 
  2259 
  2702 	--WriteLnToConsole("	if GetGearType(gear) == gtJetpack then")
       
  2703 	--WriteLnToConsole("		ufoGear = gear")
       
  2704 	--WriteLnToConsole("		if (ufoFuel ~= 0) then")
       
  2705 	--WriteLnToConsole("			SetHealth(ufoGear, ufoFuel)")
       
  2706 	--WriteLnToConsole("		end")
       
  2707 	--WriteLnToConsole("	end")
       
  2708 
  2260 
  2709 	WriteLnToConsole("	if isATrackedGear(gear) then")
  2261 	WriteLnToConsole("	if isATrackedGear(gear) then")
  2710 	WriteLnToConsole("		trackGear(gear)")
  2262 	WriteLnToConsole("		trackGear(gear)")
  2711 	--WriteLnToConsole("		if GetGearType(gear) == gtPortal then")
       
  2712 	--WriteLnToConsole("			setGearValue(gear,\"life\",portalDistance)")
       
  2713 	--WriteLnToConsole("		end")
       
  2714 
  2263 
  2715 	WriteLnToConsole("	end")
  2264 	WriteLnToConsole("	end")
  2716 	WriteLnToConsole("end")
  2265 	WriteLnToConsole("end")
  2717 	WriteLnToConsole("")
  2266 	WriteLnToConsole("")
  2718 
  2267 
  2750 
  2299 
  2751 	WriteLnToConsole("")
  2300 	WriteLnToConsole("")
  2752 	WriteLnToConsole("function onGearDelete(gear)")
  2301 	WriteLnToConsole("function onGearDelete(gear)")
  2753 	WriteLnToConsole("")
  2302 	WriteLnToConsole("")
  2754 	WriteLnToConsole("	--insert code according to taste")
  2303 	WriteLnToConsole("	--insert code according to taste")
  2755 	--WriteLnToConsole("	if GetGearType(gear) == gtJetpack then")
       
  2756 	--WriteLnToConsole("		ufoGear = nil")
       
  2757 	--WriteLnToConsole("	end")
       
  2758 	WriteLnToConsole("")
  2304 	WriteLnToConsole("")
  2759 	WriteLnToConsole("	if isATrackedGear(gear) then")
  2305 	WriteLnToConsole("	if isATrackedGear(gear) then")
  2760 	WriteLnToConsole("")
  2306 	WriteLnToConsole("")
  2761 	WriteLnToConsole("		if getGearValue(gear,\"tag\") ~= nil then")
  2307 	WriteLnToConsole("		if getGearValue(gear,\"tag\") ~= nil then")
  2762 	WriteLnToConsole("			CheckForConclusion(gear)")
  2308 	WriteLnToConsole("			CheckForConclusion(gear)")
  2763 	WriteLnToConsole("		end")
  2309 	WriteLnToConsole("		end")
  2764 
  2310 
  2765 	--WriteLnToConsole("		if getGearValue(gear,\"tag\") == \"failure\" then")
       
  2766 	--WriteLnToConsole("			EndGameIn(\"failure\")")
       
  2767 	--WriteLnToConsole("		elseif getGearValue(gear,\"tag\") == \"victory\" then")
       
  2768 	--WriteLnToConsole("			EndGameIn(\"victory\")")
       
  2769 	--WriteLnToConsole("		end")
       
  2770 	WriteLnToConsole("")
  2311 	WriteLnToConsole("")
  2771 	WriteLnToConsole("		if getGearValue(gear, \"tCirc\") ~= nil then")
  2312 	WriteLnToConsole("		if getGearValue(gear, \"tCirc\") ~= nil then")
  2772 	WriteLnToConsole("			DeleteVisualGear(getGearValue(gear, \"tCirc\"))")
  2313 	WriteLnToConsole("			DeleteVisualGear(getGearValue(gear, \"tCirc\"))")
  2773 	WriteLnToConsole("		end")
  2314 	WriteLnToConsole("		end")
  2774 	WriteLnToConsole("")
  2315 	WriteLnToConsole("")
  2786 
  2327 
  2787 	WriteLnToConsole("	for i = 1, #wepArray do")
  2328 	WriteLnToConsole("	for i = 1, #wepArray do")
  2788 	WriteLnToConsole("		SetAmmo(wepArray[i], 0, 0, 0, 1)")
  2329 	WriteLnToConsole("		SetAmmo(wepArray[i], 0, 0, 0, 1)")
  2789 	WriteLnToConsole("	end")
  2330 	WriteLnToConsole("	end")
  2790 	WriteLnToConsole("")
  2331 	WriteLnToConsole("")
  2791 	--WriteLnToConsole("	SetAmmo(amBazooka, 2, 0, 0, 0)")
       
  2792 	--WriteLnToConsole("	SetAmmo(amGrenade, 1, 0, 0, 0)")
       
  2793 	--WriteLnToConsole("	SetAmmo(amRope, 9, 0, 0, 0)")
       
  2794 	WriteLnToConsole("	SetAmmo(amSkip, 9, 0, 0, 0)")
  2332 	WriteLnToConsole("	SetAmmo(amSkip, 9, 0, 0, 0)")
  2795 	WriteLnToConsole("")
  2333 	WriteLnToConsole("")
  2796 	WriteLnToConsole("end")
  2334 	WriteLnToConsole("end")
  2797 	WriteLnToConsole("")
  2335 	WriteLnToConsole("")
  2798 
  2336 
  2931 				" " .. "|" ..
  2469 				" " .. "|" ..
  2932 				loc("COMMANDS: (Use while no weapon is selected)") .. "|" ..
  2470 				loc("COMMANDS: (Use while no weapon is selected)") .. "|" ..
  2933 				loc("Save Level: Precise+4") .. "|" ..
  2471 				loc("Save Level: Precise+4") .. "|" ..
  2934 				loc("Toggle Editing Weapons and Tools: Precise+2") .. "|" ..
  2472 				loc("Toggle Editing Weapons and Tools: Precise+2") .. "|" ..
  2935 				" " .. "|" ..
  2473 				" " .. "|" ..
  2936 				--" " .. "|" ..
       
  2937 				"", 4, 5000
  2474 				"", 4, 5000
  2938 				)
  2475 				)
  2939 						--4
  2476 						--4
  2940 	elseif cat[cIndex] == loc("Girder Placement Mode") then
  2477 	elseif cat[cIndex] == loc("Girder Placement Mode") then
  2941 
  2478 
  2961 		ShowMission	(
  2498 		ShowMission	(
  2962 				loc("RUBBER PLACEMENT MODE"),
  2499 				loc("RUBBER PLACEMENT MODE"),
  2963 				loc("Use this mode to place rubberbands"),
  2500 				loc("Use this mode to place rubberbands"),
  2964 				loc("Place Object: [Left Click]") .. "|" ..
  2501 				loc("Place Object: [Left Click]") .. "|" ..
  2965 				loc("Change Rotation: [Left], [Right]") .. "|" ..
  2502 				loc("Change Rotation: [Left], [Right]") .. "|" ..
  2966 				--"Change LandFlag: [1], [2], [3]" .. "|" ..
       
  2967 				--" " .. "|" ..
       
  2968 				loc("1 - Normal Rubber") .. "|" ..
  2503 				loc("1 - Normal Rubber") .. "|" ..
  2969 				--"2 - Indestructible Rubber" .. "|" ..
       
  2970 				--"3 - Icy Rubber" .. "|" ..
       
  2971 				" " .. "|" ..
  2504 				" " .. "|" ..
  2972 				loc("Deletion Mode: [5]") .. "|" ..
  2505 				loc("Deletion Mode: [5]") .. "|" ..
  2973 				loc("Toggle Help: Precise+1") .. "|" ..
  2506 				loc("Toggle Help: Precise+1") .. "|" ..
  2974 				"", -amRubber, 60000
  2507 				"", -amRubber, 60000
  2975 				)
  2508 				)
  3131 				loc("SPRITE MODIFICATION MODE"),
  2664 				loc("SPRITE MODIFICATION MODE"),
  3132 				"",
  2665 				"",
  3133 				"Use this mode to select, modify, or delete existing girders," .. "|" ..
  2666 				"Use this mode to select, modify, or delete existing girders," .. "|" ..
  3134 				"rubbers, or sprites." .. "|" ..
  2667 				"rubbers, or sprites." .. "|" ..
  3135 				"[Left], [Right]: Change between land-flag" .. "|" ..
  2668 				"[Left], [Right]: Change between land-flag" .. "|" ..
  3136 				--"[Left], [Right]: Change between selection, land-flag" .. "|" ..
       
  3137 				"modification, and deletion modes." .. "|" ..
  2669 				"modification, and deletion modes." .. "|" ..
  3138 				"While in modification mode, you can " .. "|" ..
  2670 				"While in modification mode, you can " .. "|" ..
  3139 				"change land-flag by clicking on an object." .. "|" ..
  2671 				"change land-flag by clicking on an object." .. "|" ..
  3140 				loc("Set LandFlag: [1], [2], [3], [4]") .. "|" ..
  2672 				loc("Set LandFlag: [1], [2], [3], [4]") .. "|" ..
  3141 				" " .. "|" ..
  2673 				" " .. "|" ..
  3164 				" " .. "|" ..
  2696 				" " .. "|" ..
  3165 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2697 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  3166 				loc("Toggle Help: Precise+1") .. "|" ..
  2698 				loc("Toggle Help: Precise+1") .. "|" ..
  3167 				"", 2, 60000
  2699 				"", 2, 60000
  3168 				)
  2700 				)
  3169 
       
  3170 	--elseif cat[cIndex] == loc("Sprite Testing Mode") then
       
  3171 
       
  3172 	--	ShowMission	(
       
  3173 	--			"SPRITE TESTING MODE",
       
  3174 	--			"Use this mode to test sprites before you place them.",
       
  3175 	--			"Place Temporary Visual Test: [Left Click]" .. "|" ..
       
  3176 	--			"[Left], [Right]: Change between sprites." .. "|" ..
       
  3177 	--			" " .. "|" ..
       
  3178 	--			loc("Change Placement Mode: [Up], [Down]") .. "|" ..
       
  3179 	--			loc("Toggle Help: Precise+1") .. "|" ..
       
  3180 	--			"", 3, 60000
       
  3181 	--			)
       
  3182 
  2701 
  3183 	elseif cat[cIndex] == loc("Tagging Mode") then
  2702 	elseif cat[cIndex] == loc("Tagging Mode") then
  3184 
  2703 
  3185 		ShowMission	(
  2704 		ShowMission	(
  3186 				loc("TAGGING MODE"),
  2705 				loc("TAGGING MODE"),
  3334 
  2853 
  3335 		if genTimer >= 100 then
  2854 		if genTimer >= 100 then
  3336 
  2855 
  3337 			genTimer = 0
  2856 			genTimer = 0
  3338 
  2857 
  3339 			--if destroyMap == true then
       
  3340 			--	BlowShitUpPartTwo()
       
  3341 			--end
       
  3342 
       
  3343 			curWep = GetCurAmmoType()
  2858 			curWep = GetCurAmmoType()
  3344 
  2859 
  3345 			HandleRankingEffects()
  2860 			HandleRankingEffects()
  3346 			runOnGears(PortalEffects)
  2861 			runOnGears(PortalEffects)
  3347 
  2862 
  3356 				updateHelp()
  2871 				updateHelp()
  3357 			-- change to generic mode if girder no longer selected
  2872 			-- change to generic mode if girder no longer selected
  3358 			elseif (cIndex == 1) and (curWep ~= amGirder) then
  2873 			elseif (cIndex == 1) and (curWep ~= amGirder) then
  3359 				cIndex = 3 -- was 2
  2874 				cIndex = 3 -- was 2
  3360 				RedefineSubset()
  2875 				RedefineSubset()
  3361 				--updateHelp()
       
  3362 			elseif (cIndex == 2) and (curWep ~= amRubber) then
  2876 			elseif (cIndex == 2) and (curWep ~= amRubber) then
  3363 				cIndex = 3 --new
  2877 				cIndex = 3 --new
  3364 				RedefineSubset()
  2878 				RedefineSubset()
  3365 				--updateHelp()
       
  3366 
       
  3367 			end
  2879 			end
  3368 
  2880 
  3369 			-- update display selection criteria
  2881 			-- update display selection criteria
  3370 			if (curWep == amGirder) or (curWep == amRubber) or (curWep == amAirAttack) then
  2882 			if (curWep == amGirder) or (curWep == amRubber) or (curWep == amAirAttack) then
  3371 				AddCaption(cat[cIndex],0xffba00ff,capgrpMessage)
  2883 				AddCaption(cat[cIndex],0xffba00ff,capgrpMessage)
  3404 		SetVisualGearValues(sCirc, GetX(sGear), GetY(sGear), 100, 255, 1, 10, 0, 300, 3, 0xff00ffff)
  2916 		SetVisualGearValues(sCirc, GetX(sGear), GetY(sGear), 100, 255, 1, 10, 0, 300, 3, 0xff00ffff)
  3405 	elseif (cat[cIndex] == loc("Sprite Modification Mode")) and (sSprite ~= nil) then
  2917 	elseif (cat[cIndex] == loc("Sprite Modification Mode")) and (sSprite ~= nil) then
  3406 		SetVisualGearValues(sSprite, nil, nil, 0, 0, nil, nil, 10000, nil, 10000)
  2918 		SetVisualGearValues(sSprite, nil, nil, 0, 0, nil, nil, 10000, nil, 10000)
  3407 	elseif (cat[cIndex] == loc("Tagging Mode")) then
  2919 	elseif (cat[cIndex] == loc("Tagging Mode")) then
  3408 		if (sGear ~= nil) or (closestGear ~= nil) then
  2920 		if (sGear ~= nil) or (closestGear ~= nil) then
  3409 			--recently disabled
       
  3410 			--SetVisualGearValues(sCirc, GetX(sGear), GetY(sGear), 0, 1, 1, 10, 0, 1, 1, 0x00000000)
       
  3411 			closestGear = nil
  2921 			closestGear = nil
  3412 			sGear = nil
  2922 			sGear = nil
  3413 		end
  2923 		end
  3414 	end
  2924 	end
  3415 
  2925 
  3428 		elseif GetGearType(cGear) == gtGirder then
  2938 		elseif GetGearType(cGear) == gtGirder then
  3429 
  2939 
  3430 			CGR = GetState(cGear)
  2940 			CGR = GetState(cGear)
  3431 
  2941 
  3432 			-- improve rectangle test based on CGR when you can be bothered
  2942 			-- improve rectangle test based on CGR when you can be bothered
  3433 			--if TestRectForObstacle(x-20, y-20, x+20, y+20, true) then
  2943 			PlaceObject(x, y)
  3434 			--	AddCaption(loc("Invalid Girder Placement"),0xffba00ff,capgrpVolume)
       
  3435 			--else
       
  3436 				PlaceObject(x, y)
       
  3437 			--end
       
  3438 
       
  3439 			-- this allows the girder tool to be used like a mining laser
       
  3440 
       
  3441 		--[[
       
  3442 
       
  3443 			if CGR < 4 then
       
  3444 				AddGear(x, y, gtGrenade, 0, 0, 0, 1)
       
  3445 			elseif CGR == 4 then
       
  3446 				g = AddGear(x-30, y, gtGrenade, 0, 0, 0, 1)
       
  3447 				g = AddGear(x+30, y, gtGrenade, 0, 0, 0, 1)
       
  3448 			elseif CGR == 5 then -------
       
  3449 				g = AddGear(x+30, y+30, gtGrenade, 0, 0, 0, 1)
       
  3450 				g = AddGear(x-30, y-30, gtGrenade, 0, 0, 0, 1)
       
  3451 			elseif CGR == 6 then
       
  3452 				g = AddGear(x, y+30, gtGrenade, 0, 0, 0, 1)
       
  3453 				g = AddGear(x, y-30, gtGrenade, 0, 0, 0, 1)
       
  3454 			elseif CGR == 7 then -------
       
  3455 				g = AddGear(x+30, y-30, gtGrenade, 0, 0, 0, 1)
       
  3456 				g = AddGear(x-30, y+30, gtGrenade, 0, 0, 0, 1)
       
  3457 			end
       
  3458 ]]
       
  3459 		end
  2944 		end
  3460 
  2945 
  3461 	end
  2946 	end
  3462 
  2947 
  3463 end
  2948 end
  3505 			landType = lfIndestructible
  2990 			landType = lfIndestructible
  3506 			AddCaption(loc("Indestructible Land"),0xffba00ff,capgrpAmmoinfo)
  2991 			AddCaption(loc("Indestructible Land"),0xffba00ff,capgrpAmmoinfo)
  3507 		elseif s == 3 then
  2992 		elseif s == 3 then
  3508 			landType = lfIce
  2993 			landType = lfIce
  3509 			AddCaption(loc("Icy Land"),0xffba00ff,capgrpAmmoinfo)
  2994 			AddCaption(loc("Icy Land"),0xffba00ff,capgrpAmmoinfo)
  3510 		elseif (s == 4) then --and (cat[cIndex] == "Sprite Placement Mode") then
  2995 		elseif (s == 4) then
  3511 			landType = lfBouncy
  2996 			landType = lfBouncy
  3512 			AddCaption(loc("Bouncy Land"),0xffba00ff,capgrpAmmoinfo)
  2997 			AddCaption(loc("Bouncy Land"),0xffba00ff,capgrpAmmoinfo)
  3513 		elseif (s == 5) and (cat[cIndex] ~= loc("Sprite Modification Mode")) then
  2998 		elseif (s == 5) and (cat[cIndex] ~= loc("Sprite Modification Mode")) then
  3514 			superDelete = true
  2999 			superDelete = true
  3515 			-- this and the above should probably be shown in another place where the other
       
  3516 			-- two add captions are displayed for this kinda thing
       
  3517 			--AddCaption(loc("Warning: Deletition Mode Active"),0xffba00ff,capgrpAmmoinfo)
       
  3518 		end
  3000 		end
  3519 	elseif pMode[pIndex] == loc("Selection Mode") then
  3001 	elseif pMode[pIndex] == loc("Selection Mode") then
  3520 		setGearValue(sGear, "ranking", s)
  3002 		setGearValue(sGear, "ranking", s)
  3521 	end
  3003 	end
  3522 
  3004 
  3524 
  3006 
  3525 function onPrecise()
  3007 function onPrecise()
  3526 
  3008 
  3527 	preciseOn = true
  3009 	preciseOn = true
  3528 
  3010 
  3529 	--ParseCommand("voicepack " .. "Surfer")
       
  3530 	--AddCaption(GetHogGrave(CurrentHedgehog))
       
  3531 
       
  3532 	--if (pMode[pIndex] == "Selection Mode") and (closestGear ~= nil) then
       
  3533 	--	menuEnabled = not(menuEnabled)
       
  3534 		--showmenu
       
  3535 	--end
       
  3536 
       
  3537 	--BlowShitUp()
       
  3538 
       
  3539 --[[
       
  3540 	frameID = 1
       
  3541 	visualSprite = sprAmGirder--reducedSpriteIDArray[pIndex]
       
  3542 	--visualSprite = spriteIDArray[pIndex]
       
  3543 	tempE = AddVisualGear(1, 1, vgtStraightShot, 0, true,1)
       
  3544 	g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
       
  3545 	SetVisualGearValues(tempE, g1, g2, 0, 0, g5, frameID, g7, visualSprite, g9, g10 )
       
  3546 
       
  3547 ]]
       
  3548 
       
  3549 end
  3011 end
  3550 
  3012 
  3551 function onPreciseUp()
  3013 function onPreciseUp()
  3552 	preciseOn = false
  3014 	preciseOn = false
  3553 end
  3015 end
  3554 
       
  3555 --[[function onLJump()
       
  3556 end
       
  3557 
       
  3558 function onHJump()
       
  3559 end]]
       
  3560 
       
  3561 --[[function UpdateMenu()
       
  3562 
       
  3563 	preMenuCfg = loc("Use the arrow keys to navigate this menu") .. "|"
       
  3564 	postMenuCfg = loc("Press [Fire] to accept this configuration.")
       
  3565 
       
  3566 	menu = 	{
       
  3567 			loc("Walls Required") .. ": " .. #wTouched .. "|",
       
  3568 			loc("Surf Before Crate") .. ": " .. BoolToCfgTxt(requireSurfer) .. "|",
       
  3569 			loc("Attack From Rope") .. ": " .. BoolToCfgTxt(AFR) .. "|",
       
  3570 			loc("Super Weapons") .. ": " .. BoolToCfgTxt(allowCrazyWeps) .. "|"
       
  3571 			}
       
  3572 end
       
  3573 
       
  3574 function HandleStartingStage()
       
  3575 
       
  3576 	temp = menu[menuIndex]
       
  3577 	menu[menuIndex] = "--> " .. menu[menuIndex]
       
  3578 
       
  3579 	missionComment = ""
       
  3580 	for i = 1, #menu do
       
  3581 		missionComment = missionComment .. menu[i]
       
  3582 	end
       
  3583 
       
  3584 	ShowMission	(
       
  3585 				loc("HEDGE EDITOR") .. " 0.4",
       
  3586 				loc("Edit gear properties"),
       
  3587 				preMenuCfg..
       
  3588 				missionComment ..
       
  3589 				postMenuCfg ..
       
  3590 				--" " .. "|" ..
       
  3591 				"", 4, 300000
       
  3592 				)
       
  3593 
       
  3594 	menu[menuIndex] = temp
       
  3595 
       
  3596 end
       
  3597 
       
  3598 function UpdateMenuCategoryOrSomething()
       
  3599 	temp = menu[1]
       
  3600 	menu = {}
       
  3601 	if temp == "Initialisation Menu" then
       
  3602 		for i = 1, #initMenuArray do
       
  3603 			menu[i] = initMenuArray[i] .. ": " .. initMenuArray[2]
       
  3604 		end
       
  3605 	elseif temp == "GameFlag Menu" then
       
  3606 		for i = 1, #gameFlagList do
       
  3607 			menu[i] = gameFlagList[1] .. ": " .. BoolToStr(gameFlagList[2])
       
  3608 		end
       
  3609 	elseif temp == "Ammo Menu" then
       
  3610 		for i  = 1, #atkArray do	--except, this should be per hog, not overall :(
       
  3611 			--menu[i] = atkArray[i][2] .. ": " .. atkArray[i][3]
       
  3612 			menu[i] = atkArray[i][2] .. ": " .. getGearValue(sGear,atkArray[i][1])
       
  3613 		end
       
  3614 		-- you should run through all the hogs and assign them ammo values based on the
       
  3615 		-- ammo set, yea, let's write that function in 5th
       
  3616 		for i = #menu, #utilArray do
       
  3617 		end
       
  3618 	end
       
  3619 end
       
  3620 
       
  3621 function doMenuShit(d)
       
  3622 
       
  3623 	if d == "up" then
       
  3624 		menuIndex = menuIndex -1
       
  3625 		if 	menuIndex == 0 then
       
  3626 			menuIndex = #menu
       
  3627 		end
       
  3628 	elseif d == "down" then
       
  3629 		menuIndex = menuIndex +1
       
  3630 		if menuIndex > #menu then
       
  3631 			menuIndex = 1
       
  3632 		end
       
  3633 	elseif d == "left" then
       
  3634 
       
  3635 	elseif d == "right" then
       
  3636 
       
  3637 	end
       
  3638 
       
  3639 end]]
       
  3640 
  3016 
  3641 ---------------------------------------------------------------
  3017 ---------------------------------------------------------------
  3642 -- Cycle through selection subsets (by changing pIndex, pMode)
  3018 -- Cycle through selection subsets (by changing pIndex, pMode)
  3643 -- i.e 	health of barrels, medikits,
  3019 -- i.e 	health of barrels, medikits,
  3644 --		timer of mines
  3020 --		timer of mines
  3647 function onLeft()
  3023 function onLeft()
  3648 
  3024 
  3649 	leftHeld = true
  3025 	leftHeld = true
  3650 	rightHeld = false
  3026 	rightHeld = false
  3651 
  3027 
  3652 	--if menuEnabled == true then
  3028 	pIndex = pIndex - 1
  3653 		--doMenuShit("left")
  3029 	if pIndex == 0 then
  3654 
  3030 		pIndex = #pMode
  3655 	--else -- normal case
  3031 	end
  3656 
  3032 
  3657 		pIndex = pIndex - 1
  3033 	if (curWep == amGirder) or (curWep == amRubber) or (curWep == amAirAttack) then
  3658 		if pIndex == 0 then
  3034 		AddCaption(pMode[pIndex],0xffba00ff,capgrpMessage2)
  3659 			pIndex = #pMode
  3035 	end
  3660 		end
       
  3661 
       
  3662 		if (curWep == amGirder) or (curWep == amRubber) or (curWep == amAirAttack) then
       
  3663 			AddCaption(pMode[pIndex],0xffba00ff,capgrpMessage2)
       
  3664 		end
       
  3665 
       
  3666 	--end
       
  3667 
  3036 
  3668 end
  3037 end
  3669 
  3038 
  3670 function onRight()
  3039 function onRight()
  3671 
  3040 
  3672 	leftHeld = false
  3041 	leftHeld = false
  3673 	rightHeld = true
  3042 	rightHeld = true
  3674 
  3043 
  3675 	--if menuEnabled == true then
  3044 	pIndex = pIndex + 1
  3676 		--doMenuShit("right")
  3045 	if pIndex > #pMode then
  3677 
  3046 		pIndex = 1
  3678 	--else -- normal case
  3047 	end
  3679 
  3048 
  3680 		pIndex = pIndex + 1
  3049 	if (curWep == amGirder) or (curWep == amRubber) or (curWep == amAirAttack) then
  3681 		if pIndex > #pMode then
  3050 		AddCaption(pMode[pIndex],0xffba00ff,capgrpMessage2)
  3682 			pIndex = 1
  3051 	end
  3683 		end
       
  3684 
       
  3685 		if (curWep == amGirder) or (curWep == amRubber) or (curWep == amAirAttack) then
       
  3686 			AddCaption(pMode[pIndex],0xffba00ff,capgrpMessage2)
       
  3687 		end
       
  3688 
       
  3689 	--end
       
  3690 
  3052 
  3691 end
  3053 end
  3692 
  3054 
  3693 ---------------------------------------------------------
  3055 ---------------------------------------------------------
  3694 -- Cycle through primary categories (by changing cIndex)
  3056 -- Cycle through primary categories (by changing cIndex)
  3695 -- i.e 	mine, sticky mine, barrels
  3057 -- i.e 	mine, sticky mine, barrels
  3696 --		health/weapon/utility crate, placement of gears
  3058 --		health/weapon/utility crate, placement of gears
  3697 ---------------------------------------------------------
  3059 ---------------------------------------------------------
  3698 function onUp()
  3060 function onUp()
  3699 
  3061 
  3700 	--if menuEnabled == true then
       
  3701 		--doMenuShit("up")
       
  3702 
       
  3703 	--elseif (curWep ~= amGirder) then
       
  3704 	if (curWep ~= amGirder) then
  3062 	if (curWep ~= amGirder) then
  3705 		--AddCaption(cIndex)
       
  3706 		cIndex = cIndex - 1
  3063 		cIndex = cIndex - 1
  3707 		if (cIndex == 1) or (cIndex == 2) then --1	--we no longer hit girder by normal means
  3064 		if (cIndex == 1) or (cIndex == 2) then --1	--we no longer hit girder by normal means
  3708 			cIndex = #cat
  3065 			cIndex = #cat
  3709 		end
  3066 		end
  3710 
  3067 
  3715 
  3072 
  3716 end
  3073 end
  3717 
  3074 
  3718 function onDown()
  3075 function onDown()
  3719 
  3076 
  3720 	--if menuEnabled == true then
       
  3721 		--doMenuShit("down")
       
  3722 
       
  3723 	--elseif (curWep ~= amGirder) then
       
  3724 	if (curWep ~= amGirder) then
  3077 	if (curWep ~= amGirder) then
  3725 		cIndex = cIndex + 1
  3078 		cIndex = cIndex + 1
  3726 		if cIndex > #cat then
  3079 		if cIndex > #cat then
  3727 			cIndex = 3	 -- 2 ----we no longer hit girder by normal means
  3080 			cIndex = 3	 -- 2 ----we no longer hit girder by normal means
  3728 		end
  3081 		end
  3787 	end
  3140 	end
  3788 
  3141 
  3789 	Explosives = 0
  3142 	Explosives = 0
  3790 	MinesNum = 0
  3143 	MinesNum = 0
  3791 
  3144 
  3792 	--GameFlags = GameFlags + gfInfAttack
       
  3793 	EnableGameFlags(gfInfAttack, gfDisableWind)
  3145 	EnableGameFlags(gfInfAttack, gfDisableWind)
  3794 
  3146 
  3795 	RedefineSubset()
  3147 	RedefineSubset()
  3796 
  3148 
  3797 end
  3149 end
  3815 				" " .. "|" ..
  3167 				" " .. "|" ..
  3816 				loc("COMMANDS: (Use while no weapon is selected)") .. "|" ..
  3168 				loc("COMMANDS: (Use while no weapon is selected)") .. "|" ..
  3817 				loc("Save Level: Precise+4") .. "|" ..
  3169 				loc("Save Level: Precise+4") .. "|" ..
  3818 				loc("Toggle Editing Weapons and Tools: Precise+2") .. "|" ..
  3170 				loc("Toggle Editing Weapons and Tools: Precise+2") .. "|" ..
  3819 				" " .. "|" ..
  3171 				" " .. "|" ..
  3820 				--" " .. "|" ..
       
  3821 				"", 4, 5000
  3172 				"", 4, 5000
  3822 				)
  3173 				)
  3823 
  3174 
  3824 
  3175 
  3825 	sCirc = AddVisualGear(0,0,vgtCircle,0,true)
  3176 	sCirc = AddVisualGear(0,0,vgtCircle,0,true)
  3832 	SetVisualGearValues(sSprite, 1, 1, 0, 0, nil, frameID, 20000, visualSprite, 20000, 0 )
  3183 	SetVisualGearValues(sSprite, 1, 1, 0, 0, nil, frameID, 20000, visualSprite, 20000, 0 )
  3833 
  3184 
  3834 	SetAmmoDelay(amAirAttack,0)
  3185 	SetAmmoDelay(amAirAttack,0)
  3835 	SetAmmoDelay(amGirder,0)
  3186 	SetAmmoDelay(amGirder,0)
  3836 	SetAmmoDelay(amRubber,0)
  3187 	SetAmmoDelay(amRubber,0)
  3837 	--SetAmmoDelay(amNapalm,0)
       
  3838 	--SetAmmoDelay(amDrillStrike,0)
       
  3839 	--SetAmmoDelay(amMineStrike,0)
       
  3840 
  3188 
  3841 end
  3189 end
  3842 
  3190 
  3843 function SetEditingWeps(ammoCount)
  3191 function SetEditingWeps(ammoCount)
  3844 
  3192 
  3845 	AddAmmo(CurrentHedgehog, amAirAttack, ammoCount)
  3193 	AddAmmo(CurrentHedgehog, amAirAttack, ammoCount)
  3846 	AddAmmo(CurrentHedgehog, amGirder, ammoCount)
  3194 	AddAmmo(CurrentHedgehog, amGirder, ammoCount)
  3847 	AddAmmo(CurrentHedgehog, amRubber, ammoCount)
  3195 	AddAmmo(CurrentHedgehog, amRubber, ammoCount)
  3848 	--AddAmmo(CurrentHedgehog, amPortalGun, ammoCount)
       
  3849 	AddAmmo(CurrentHedgehog, amTeleport, ammoCount)
  3196 	AddAmmo(CurrentHedgehog, amTeleport, ammoCount)
  3850 	AddAmmo(CurrentHedgehog, amRope, ammoCount)
  3197 	AddAmmo(CurrentHedgehog, amRope, ammoCount)
  3851 	--AddAmmo(CurrentHedgehog, amJetpack, ammoCount)
  3198 	AddAmmo(CurrentHedgehog, amSwitch, 100)
  3852 	--AddAmmo(CurrentHedgehog, amParachute, ammoCount)
       
  3853 	AddAmmo(CurrentHedgehog, amSwitch, 100) --ammoCount
       
  3854 	AddAmmo(CurrentHedgehog, amSkip, 100)
  3199 	AddAmmo(CurrentHedgehog, amSkip, 100)
  3855 
  3200 
  3856 end
  3201 end
  3857 
  3202 
  3858 function clearAmmo(gear)
  3203 function clearAmmo(gear)
  3877 	nArr = {}
  3222 	nArr = {}
  3878 	for i = 1,#preMadeTeam[pIndex][3] do
  3223 	for i = 1,#preMadeTeam[pIndex][3] do
  3879 		table.insert(nArr,preMadeTeam[pIndex][3][i])
  3224 		table.insert(nArr,preMadeTeam[pIndex][3][i])
  3880 	end
  3225 	end
  3881 	SetHogTeamName(gear, tName)
  3226 	SetHogTeamName(gear, tName)
  3882 	--runOnHogsInTeam(AssignTeam(gear),tName)
       
  3883 	runOnHogs(AssignTeam)
  3227 	runOnHogs(AssignTeam)
  3884 end
  3228 end
  3885 
  3229 
  3886 function AssignTeam(gear)
  3230 function AssignTeam(gear)
  3887 
  3231 
  3960 		AddAmmo(gear, amNapalm, 1)
  3304 		AddAmmo(gear, amNapalm, 1)
  3961 
  3305 
  3962 	elseif pro == loc("Soldier") then
  3306 	elseif pro == loc("Soldier") then
  3963 
  3307 
  3964 		SetHogName(gear,loc("Soldier"))
  3308 		SetHogName(gear,loc("Soldier"))
  3965 		--SetHogHat(gear, "war_americanww2helmet")
  3309 		SetHogHat(gear, "war_americanww2helmet")
  3966 		SetHogHat(gear, "TeamSoldier")
       
  3967 		SetHealth(gear, 100)
  3310 		SetHealth(gear, 100)
  3968 		AddAmmo(gear, amBazooka, 100)
  3311 		AddAmmo(gear, amBazooka, 100)
  3969 		AddAmmo(gear, amShotgun, 100)
  3312 		AddAmmo(gear, amShotgun, 100)
  3970 		AddAmmo(gear, amMortar, 100)
  3313 		AddAmmo(gear, amMortar, 100)
  3971 
  3314 
  3984 		SetHogHat(gear, "chef")
  3327 		SetHogHat(gear, "chef")
  3985 		SetHealth(gear, 65)
  3328 		SetHealth(gear, 65)
  3986 		AddAmmo(gear, amGasBomb, 100)
  3329 		AddAmmo(gear, amGasBomb, 100)
  3987 		AddAmmo(gear, amKnife, 100)
  3330 		AddAmmo(gear, amKnife, 100)
  3988 		AddAmmo(gear, amCake, 1)
  3331 		AddAmmo(gear, amCake, 1)
  3989 		--AddAmmo(gear, amWatermelon, 1)
       
  3990 
  3332 
  3991 	elseif pro == loc("Ninja") then
  3333 	elseif pro == loc("Ninja") then
  3992 
  3334 
  3993 		SetHogName(gear,loc("Ninja"))
  3335 		SetHogName(gear,loc("Ninja"))
  3994 		SetHogHat(gear, "NinjaFull")
  3336 		SetHogHat(gear, "NinjaFull")
  4057 		SetHealth(gear, 70)
  3399 		SetHealth(gear, 70)
  4058 		AddAmmo(gear, amBaseballBat, 100)
  3400 		AddAmmo(gear, amBaseballBat, 100)
  4059 		AddAmmo(gear, amGasBomb, 100)
  3401 		AddAmmo(gear, amGasBomb, 100)
  4060 		AddAmmo(gear, amBallgun, 1)
  3402 		AddAmmo(gear, amBallgun, 1)
  4061 		AddAmmo(gear, amKamikaze, 1)
  3403 		AddAmmo(gear, amKamikaze, 1)
  4062 		--AddAmmo(gear, amPiano, 1)
       
  4063 
  3404 
  4064 	-- some other ideas/roles
  3405 	-- some other ideas/roles
  4065 	-- relocator: portal, teleport, tardis, extra time, lasersite
  3406 	-- relocator: portal, teleport, tardis, extra time, lasersite
  4066 	-- vampire: vampire, whip, birdy, extra damage, seduction
  3407 	-- vampire: vampire, whip, birdy, extra damage, seduction
  4067 	-- flyboy: rc plane, deagle, whip, parachute, kamikaze
  3408 	-- flyboy: rc plane, deagle, whip, parachute, kamikaze
  4119 		if (ufoFuel ~= 0) then
  3460 		if (ufoFuel ~= 0) then
  4120 			SetHealth(ufoGear, ufoFuel)
  3461 			SetHealth(ufoGear, ufoFuel)
  4121 		end
  3462 		end
  4122 	end
  3463 	end
  4123 
  3464 
  4124 	if GetGearType(gear) == gtHedgehog then
  3465 	if (GetGearType(gear) == gtAirAttack) or (GetGearType(gear) == gtGirder) then
  4125 		--table.insert(hhs, gear)
       
  4126 	elseif (GetGearType(gear) == gtAirAttack) or (GetGearType(gear) == gtGirder) then
       
  4127 		cGear = gear
  3466 		cGear = gear
  4128 	end
  3467 	end
  4129 
  3468 
  4130 	if isATrackedGear(gear) then
  3469 	if isATrackedGear(gear) then
  4131 		trackGear(gear)
  3470 		trackGear(gear)