#base robot_giant.pop #base robot_standard.pop #base robot_gatebot.pop //Combat tank scripting by lite //Unstable bots script by SnuperBob //Map by Madminermonkey //[REDACTED] by Madminermonkey, Sergeant Table, Conga Dispenser, PDA Expert, Claudz, SnuperBob, and OrangeGlazer //[REDACTED] promotional art by Claudz and Washy population { StartingCurrency 4600 RespawnWaveTime 6 CanBotsAttackWhileInSpawnRoom no AddSentryBusterWhenDamageDealtExceeds 3000 AddSentryBusterWhenKillCountExceeds 12 AllowBotExtraSlots 1 RobotLimit 30 LuaScriptFile "scripts\crackass.lua" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank_rocketpod.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank_rocket.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank_minigun.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank_turret.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank_base.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/combat_tank_railgun.mdl" PrecacheModel "models/bots/boss_bot/combat_tank/railgun_case.mdl" PointTemplates { autologic { logic_auto { "OnMapSpawn" "item_teamflag*,SetReturnTime,60,0,-1" "OnMapSpawn" "sky_sunset_relay,Trigger,,0,-1" } } spybasemusicawesome { logic_relay { "OnSpawn" "player,$DisplayTextChat,{yellow}[ Now Playing: {6383ff} Unnamed Track - OrangeGlazer {yellow}],5,-1" "OnSpawn" "wave2spybasing,PlaySound,,0,-1" } ambient_generic { "targetname" "wave2spybasing" "message" "spybase8.mp3" "health" "10" "pitch" "100" "spawnflags" "17" } } combattankwarning { training_annotation { "targetname" "combatwarning" "lifetime" "5" "display_text" "Something is coming! Back up!" "origin" "-2560 6664 820" } } unstablecharge { OnSpawnOutput { Target popscript Action "$unstablesetup" } OnParentKilledOutput { Target boomtime Action Trigger } trigger_ignite { "targetname" "blastzone" "origin" "0 0 0" "angles" "0 0 0" "mins" "-270 -270 -120" "maxs" "270 270 600" "spawnflags" "1" "burn_duration" "7" "damage_percent_per_second" "25" "filtername" "redteam" "StartDisabled" "1" } KeepAlive 1 filter_activator_tfteam { "targetname" "redteam" "teamnum" "2" } KeepAlive 1 logic_relay { "targetname" "boomtime" "ontrigger" "blastzone,Enable,,0,-1" "ontrigger" "blastzone,Kill,,4,-1" "ontrigger" "buffzone,Enable,,0,-1" "ontrigger" "buffzone,Kill,,0.5,-1" "OnTrigger" "bigblast,start,,0,-1" "OnTrigger" "bigblast,Kill,,4,-1" "OnTrigger" "shake,StartShake,,0,-1" "OnTrigger" "shake,Kill,,2,-1" "OnTrigger" "!self,Kill,,5,-1" } KeepAlive 1 info_particle_system { "targetname" "bigblast" "origin" "0 0 90" "angles" "0 0 0" "effect_name" "cinefx_goldrush" } KeepAlive 1 env_shake { "targetname" "shake" "amplitude" "7" "duration" "1.5" "frequency" "255" "radius" "300" "spawnflags" "4" } } } SpawnTemplate autologic SpawnTemplate combattankwarning Mission { Objective DestroySentries Where spawnbot BeginAtWave 1 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 50 DesiredCount 1 TFBot { Template T_TFBot_SentryBuster } } Mission { Objective Engineer Where spawnbot BeginAtWave 1 RunForThisManyWaves 1 InitialCooldown 25 CooldownTime 22 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter Health 275 } } Templates { unstablecharge { SpawnTemplate unstablecharge Item "Wavefinder" FireInput { Target "!self" Action "IgnitePlayer" Repeats 9999 Delay 1 Cooldown 1 } AddCond { Index 70 } FireInput { IfHealthBelow 2 Delay 2 Target !self Action $suicide } FireInput { IfHealthBelow 2 Delay 1.3 Target !self Action $PlaySound Param "items\cart_explode_trigger.wav" } CharacterAttributes { "attach particle effect" 236 "voice pitch scale" 1.45 } VoiceCommand { Delay 3 Cooldown 3 Type "Help" } } GiantHeavyDeflector { Class Heavyweapons Name "Giant Deflector Heavy" ClassIcon heavy_deflector Skill Expert Health 5000 Scale 1.8 WeaponRestrictions PrimaryOnly Attributes MiniBoss Item "The U-clank-a" CharacterAttributes { "move speed bonus" 0.4 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.4 "airblast vertical vulnerability multiplier" 0.1 "rage giving scale" 0.9 "override footstep sound set" 2 "damage bonus" 1.2 "attack projectiles" 2 } } GiantKritzMedic { Class Medic Name "Giant Kritz Medic" ClassIcon medic_kritz2 Skill Expert Health 4500 Attributes SpawnWithFullCharge WeaponRestrictions SecondaryOnly Attributes MiniBoss Item "The Kritzkrieg" CharacterAttributes { "bot medic uber health threshold" 10000 "move speed bonus" 0.5 "damage force reduction" 0.6 "airblast vulnerability multiplier" 0.6 "heal rate bonus" 200 "uber duration bonus" 999.0 } } PyroFury { Class Pyro ClassIcon pyro_dragon_fury_swordstone Name "Dragon's Fury Pyro" WeaponRestrictions PrimaryOnly Item "The Dragon's Fury" CharacterAttributes { "fire rate bonus" 0.8 } } GiantStickyDemo { Class Demoman Name "Giant Burst Fire Demo" ClassIcon demo_sticky_DAAN Skill Expert Health 4500 Item "Bomb Beanie" Attributes HoldFireUntilFullReload Attributes MiniBoss WeaponRestrictions SecondaryOnly Tag giant UseHumanAnimations 1 ItemAttributes { ItemName "Bomb Beanie" "set item tint rgb" 6535423 } ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "is_passive_weapon" 1 "override projectile type" 27 //"clip size bonus" 2 } ItemAttributes { ItemName "TF_WEAPON_PIPEBOMBLAUNCHER" "stickybomb charge rate" 0.001 "faster reload rate" 0.5 "fire rate bonus" 0.01 "Projectile range increased" 0.35 "projectile spread angle penalty" 15 "clip size upgrade atomic" 6 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } FamilyBusiness { Class Heavyweapons Skill Hard ClassIcon heavy_family_business Name "Family Business Heavy" WeaponRestrictions SecondaryOnly Item "The Family Business" } DemoRapidMinigiant { Class Demoman Skill Hard ClassIcon demo_spammer_armored Name "Rapidfire Minigiant Demoman" WeaponRestrictions PrimaryOnly Scale 1.35 Health 750 CharacterAttributes { "faster reload rate" 0.01 } } SoldierGigaburst { Class Soldier Name "Giant Burst Fire Soldier" ClassIcon soldier_burstfire Health 4200 Skill Expert WeaponRestrictions PrimaryOnly Attributes MiniBoss Attributes HoldFireUntilFullReload ItemAttributes { ItemName "TF_WEAPON_ROCKETLAUNCHER" "damage bonus" 2.0 "faster reload rate" 0.4 "fire rate bonus" 0.2 "clip size upgrade atomic" 5.0 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "Projectile speed increased" 0.9 } } } Wave { WaitWhenDone 65 Checkpoint Yes InitWaveOutput { Target wave_start_relay Action runscriptcode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/combattank`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/minigun`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/rocketpod`, getroottable()) IncludeScript(`tankextensions/combattank_weapons/railgun`, getroottable()) TankExt.CreateLoopPaths({ tank_loop = [ Vector(-2816, 6656, 696) //start of path Vector(-2413, 6656, 696) //first node of curve 1 Vector(-2350, 6649, 696) Vector(-2289, 6630, 696) Vector(-2234, 6598, 696) Vector(-2187, 6555, 696) Vector(-2150, 6504, 696) Vector(-2124, 6446, 696) Vector(-2111, 6384, 696) Vector(-2111, 6320, 696) Vector(-2124, 6258, 696) Vector(-2153, 6200, 696) Vector(-2192, 6141, 696) Vector(-2239, 6087, 696) Vector(-2293, 6040, 696) Vector(-2352, 6001, 696) Vector(-2416, 5969, 696) Vector(-2483, 5947, 696) Vector(-2553, 5933, 696) Vector(-2624, 5928, 696) //last node of first curve Vector(-4088, 5928, 520) //first node of curve 2 (waterfall) Vector(-4192, 5923, 520) Vector(-4295, 5910, 520) Vector(-4397, 5887, 520) Vector(-4496, 5856, 520) Vector(-4592, 5816, 520) Vector(-4684, 5768, 520) Vector(-4772, 5712, 520) Vector(-4854, 5649, 520) Vector(-4931, 5579, 520) Vector(-5001, 5502, 520) Vector(-5064, 5420, 520) Vector(-5120, 5332, 520) Vector(-5168, 5240, 520) Vector(-5208, 5144, 520) Vector(-5239, 5045, 520) Vector(-5262, 4943, 520) Vector(-5275, 4840, 520) Vector(-5280, 4736, 520) //middle node of curve 2 (waterfall bridge) Vector(-5275, 4632, 520) Vector(-5262, 4529, 520) Vector(-5239, 4427, 520) Vector(-5208, 4328, 520) Vector(-5168, 4232, 520) Vector(-5120, 4140, 520) Vector(-5064, 4052, 520) Vector(-5001, 3970, 520) Vector(-4931, 3893, 520) Vector(-4854, 3823, 520) Vector(-4785, 3759, 520) Vector(-4711, 3702, 520) Vector(-4632, 3652, 520) Vector(-4549, 3608, 520) Vector(-4463, 3573, 520) Vector(-4374, 3545, 520) Vector(-4284, 3524, 520) Vector(-4189, 3512, 520) Vector(-4096, 3508, 520) //last node of curve 2 Vector(-3584, 3508, 616) //first node of slalom 1 (concrete barrier) loop the last path alt route to this node Vector(-3491, 3520, 616) Vector(-3404, 3556, 616) Vector(-3224, 3704, 616) Vector(-3137, 3740, 616) Vector(-3044, 3752, 616) Vector(-2949, 3749, 616) Vector(-2858, 3725, 616) Vector(-2698, 3643, 616) Vector(-2630, 3624, 616) Vector(-2560, 3616, 616) //last node of slalom 1 Vector(-1640, 3616, 520) //first node of curve 3 Vector(-1547, 3604, 520) Vector(-1460, 3568, 520) Vector(-1386, 3511, 520) Vector(-1328, 3436, 520) Vector(-1292, 3349, 520) Vector(-1280, 3256, 520) //last node of curve 3 Vector(-1280, 3200, 520) //first node of curve 4 Vector(-1297, 3025, 520) Vector(-1348, 2857, 520) Vector(-1431, 2702, 520) Vector(-1543, 2566, 520) Vector(-1678, 2455, 520) Vector(-1833, 2372, 520) Vector(-2001, 2321, 520) Vector(-2176, 2304, 520) //last node of curve 4 Vector(-3184, 2304, 520) //first node of slalom 2 (next to rocket) Vector(-3319, 2286, 520) Vector(-3444, 2234, 520) Vector(-3552, 2152, 520) Vector(-3643, 2035, 520) Vector(-3739, 1939, 520) Vector(-3857, 1872, 520) Vector(-3988, 1836, 520) //last node of slalom 2 Vector(-4172, 1832, 520) //first node of curve 5 Vector(-4307, 1850, 520) Vector(-4432, 1902, 520) Vector(-4540, 1984, 520) Vector(-4622, 2092, 520) Vector(-4674, 2217, 520) Vector(-4692, 2352, 520) //last node of curve 5 Vector(-4692, 2988, 520) //first node of curve 6 Vector(-4674, 3123, 520) Vector(-4622, 3248, 520) Vector(-4540, 3356, 520) Vector(-4432, 3438, 520) Vector(-4307, 3490, 520) Vector(-4172, 3508, 520) //last node of curve 6 Vector(-3584, 3508, 616) ] }) TankExt.StartingPathNames([ `tank_loop_1` ])" } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } SpawnTemplate spybasemusicawesome WaveSpawn { Name Main1 TotalCurrency 50 TotalCount 7 MaxActive 5 SpawnCount 1 Where spawnbot Where spawnbot_right WaitBeforeStarting 0 WaitBetweenSpawns 7 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Soldier_Extended_Concheror } } WaveSpawn { Name Main1b TotalCurrency 25 TotalCount 15 MaxActive 8 SpawnCount 3 Where spawnbot Where spawnbot_right WaitBeforeStarting 0 WaitBetweenSpawns 5 RandomSpawn 1 TFBot { Class Heavyweapons Skill Hard Attributes "AlwaysCrit" } } WaveSpawn { Name Main1b TotalCurrency 50 TotalCount 18 MaxActive 12 SpawnCount 2 Where spawnbot Where spawnbot_left WaitBeforeStarting 0 WaitBetweenSpawns 2 RandomSpawn 1 Squad { TFBot { Template T_TFBot_Soldier_Extended_Concheror ClassIcon banner_buff_conch } TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner ClassIcon banner_buff_conch } } } WaveSpawn { WaitForAllDead Main1 WaitForAllSpawned Main1b Name Main2 TotalCurrency 50 TotalCount 6 MaxActive 6 SpawnCount 2 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 12 RandomSpawn 1 TFBot { Template GiantStickyDemo } } WaveSpawn { WaitForAllDead Main1 WaitForAllSpawned Main1b Name Main2b TotalCurrency 50 TotalCount 30 MaxActive 12 SpawnCount 3 Where spawnbot_left Where spawnbot_right WaitBeforeStarting 0 WaitBetweenSpawns 3 RandomSpawn 1 TFBot { Template FamilyBusiness } } WaveSpawn { WaitForAllDead Main2 WaitForAllSpawned Main2b Name Main3Pre TotalCurrency 25 TotalCount 14 MaxActive 14 SpawnCount 2 Where spawnbot_left Where spawnbot Where spawnbot_right WaitBeforeStarting 0 WaitBetweenSpawns 1 RandomSpawn 1 DoneOutput { Target combatwarning Action Show } TFBot { Class Scout Name "Scout" WeaponRestrictions PrimaryOnly Attributes "AlwaysCrit" } } WaveSpawn { WaitForAllDead Main3Pre Name CombatTank1 TotalCurrency 50 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 10 WaitBetweenSpawns 4 Tank { Health 22500 Speed 75 Skin 0 Name "combattank|rocketpod|rocketpod" //OPTIONS: rocketpod/rocketpod_homing/minigun/railgun StartingPathTrackNode "tank_loop_1" ClassIcon tank_small_turret //PLACEHOLDER ICON } } WaveSpawn { WaitForAllDead CombatTank1 Name CombatTank2 TotalCurrency 50 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 20 WaitBetweenSpawns 4 Tank { Health 22500 Speed 75 Skin 0 Name "combattank|rocketpod|rocketpod" //OPTIONS: rocketpod/rocketpod_homing/minigun/railgun StartingPathTrackNode "tank_loop_1" ClassIcon tank_small_turret //PLACEHOLDER ICON } } WaveSpawn { WaitForAllSpawned Main3Pre Name Main3 TotalCurrency 50 TotalCount 4 MaxActive 4 SpawnCount 2 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 22 RandomSpawn 1 TFBot { Template GiantHeavyDeflector } } WaveSpawn { WaitForAllSpawned Main3Pre Name Main3b TotalCurrency 50 TotalCount 26 MaxActive 14 SpawnCount 2 Where spawnbot_left Where spawnbot_right WaitBeforeStarting 0 WaitBetweenSpawns 3 RandomSpawn 1 TFBot { Template T_TFBot_Demo_Burst } } WaveSpawn { WaitForAllDead Main3 WaitForAllSpawned Main3b Name Main4 TotalCurrency 50 TotalCount 7 MaxActive 5 SpawnCount 1 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 8 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Soldier_Spammer AddTemplate unstablecharge Item "The Buff Banner" ClassIcon soldier_spammer_buff CharacterAttributes { "increase buff duration" 9.0 } } } WaveSpawn { WaitForAllDead Main3 TotalCurrency 50 TotalCount 2 MaxActive 2 SpawnCount 1 Where spawnbot WaitBeforeStarting 10 WaitBetweenSpawns 30 Tank { Health 20000 Speed 75 Skin 0 Name "combattank|minigun|minigun" //OPTIONS: rocketpod/rocketpod_homing/minigun/railgun StartingPathTrackNode "tank_loop_1" ClassIcon tank_small_turret //PLACEHOLDER ICON } } WaveSpawn { WaitForAllDead Main3 WaitForAllSpawned Main3b Name Main4b TotalCurrency 50 TotalCount 32 MaxActive 9 SpawnCount 1 Where spawnbot Where spawnbot_right WaitBeforeStarting 0 WaitBetweenSpawns 1.3 RandomSpawn 1 TFBot { Template T_TFBot_Scout_Bonk Attributes "AlwaysCrit" } } WaveSpawn { WaitForAllDead Main4 WaitForAllSpawned Main4b Name Finale1 TotalCurrency 50 TotalCount 2 MaxActive 2 SpawnCount 2 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 15 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Heavyweapons_BrassBeast AddTemplate unstablecharge ClassIcon heavy_brass_nys } } WaveSpawn { WaitForAllDead Main4 Name Finale1b TotalCurrency 50 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 15 RandomSpawn 1 Tank { Health 25000 Speed 75 Skin 0 Name "combattank|railgun|railgun" //OPTIONS: rocketpod/rocketpod_homing/minigun/railgun StartingPathTrackNode "tank_loop_1" ClassIcon tank_small_turret //PLACEHOLDER ICON } } WaveSpawn { WaitForAllDead Finale1b WaitForAllSpawned Finale1b Name Finale2b TotalCurrency 50 TotalCount 16 MaxActive 12 SpawnCount 2 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 4.5 RandomSpawn 1 Support 1 TFBot { Template DemoRapidMinigiant Attributes "AlwaysCrit" } } WaveSpawn { WaitForAllSpawned Finale1 Name Finale2 TotalCurrency 50 TotalCount 5 MaxActive 5 SpawnCount 5 Where spawnbot WaitBeforeStarting 10 WaitBetweenSpawns 15 RandomSpawn 1 TFBot { Template T_TFBot_Giant_Scout_Fast AddTemplate unstablecharge } } WaveSpawn { WaitForAllSpawned Finale2 Name Finale3 TotalCurrency 50 TotalCount 10 MaxActive 6 SpawnCount 2 Where spawnbot WaitBeforeStarting 25 WaitBetweenSpawns 10 RandomSpawn 1 Squad { TFBot { Template SoldierGigaburst ClassIcon soldier_burstfire_hyper } TFBot { Template GiantKritzMedic Attributes "AlwaysCrit" //So braindead players actually register there are crits on wavebar } } } } }