// mission by randomguy #base robot_standard.pop #base robot_giant.pop #base custom_weapons_randomguy.pop #base overclock_cactus_general.pop WaveSchedule { CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 2 StartingCurrency 1600 Advanced 0 AddSentryBusterWhenDamageDealtExceeds 3000 AddSentryBusterWhenKillCountExceeds 15 Templates { // T_TFBot_Giant_Demoman_PrinceTavish_NoCharge // { // Class Demoman // ClassIcon demoknight_giant //// Name "Chargeless Giant Demoknight" // Name "Giant Demoknight" // Skill Expert // Health 3600 // Item "Prince Tavish's Crown" // Item "The Eyelander" // Item "Ali Baba's Wee Booties" // Item "The King of Scotland Cape" // WeaponRestrictions MeleeOnly // Attributes MiniBoss // ItemAttributes // { // ItemName "The Eyelander" // "critboost on kill" 5 // } // CharacterAttributes // { // "move speed bonus" 0.4 // "damage force reduction" 0.5 // "airblast vulnerability multiplier" 0.5 // "override footstep sound set" 4 // } // } T_TFBot_Giant_Pyro_Flare_Spammer_Real // Spams flare gun fire, using flaregun { Template T_TFBot_Giant_Pyro_Flare_Spammer Item "The Flare Gun" ItemAttributes { ItemName "The Flare Gun" "fire rate bonus" 0.3 } } T_TFBot_Pyro_Airblast // By me, basic af tho { Class Pyro Name "Airblast Pyro" Skill Expert ClassIcon pyro_reflect_daan Item "Traffic Cone" Item "The Degreaser" } T_TFBot_Giant_Pyro_DragonFury // cosmetics from this reddit thread: https://www.reddit.com/r/tf2/comments/qbfls2/best_dragon_loadout_for_pyro/ { // rest by me tho Template T_TFBot_Giant_Pyro ClassIcon pyro_dragon_fury_swordstone // custom icon Name "Dragonic Fury" Item "The Dragon's Fury" Item "Feathered Fiend" // Feathered Fiend Item "Deity's Dress" // Deity's Dress MaxVisionRange 600 ItemAttributes { ItemName "The Dragon's Fury" item_meter_charge_rate 0.5 } // ik that paints were never meant to exist this way but, seriously? Item "Loaf Loafers" // Loaf Loafers ItemAttributes { ItemName "Loaf Loafers" // LL "set item tint rgb" 5801378 // Team Spirit BLU "item style override" 1 // alt style "freshly baked" } } } Mission { Objective Spy InitialCooldown 15 Where spawnbot BeginAtWave 6 RunForThisManyWaves 1 CooldownTime 40 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Mission { Objective Spy InitialCooldown 20 Where spawnbot BeginAtWave 1 RunForThisManyWaves 1 CooldownTime 40 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Mission { Objective Spy InitialCooldown 20 Where spawnbot BeginAtWave 4 RunForThisManyWaves 1 CooldownTime 50 DesiredCount 2 TFBot { Template T_TFBot_Spy } } Mission { Objective Spy InitialCooldown 30 Where spawnbot BeginAtWave 7 RunForThisManyWaves 1 CooldownTime 20 DesiredCount 3 TFBot { Template T_TFBot_Spy } } Mission { Objective Sniper Where spawnbot_mission_sniper BeginAtWave 6 RunForThisManyWaves 1 InitialCooldown 25 CooldownTime 40 DesiredCount 2 TFBot { Template T_TFBot_Sniper } } Mission { Objective Engineer Where spawnbot BeginAtWave 3 RunForThisManyWaves 1 InitialCooldown 30 CooldownTime 60 DesiredCount 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter ClassIcon engineer_telein } } Mission { Objective Engineer Where spawnbot BeginAtWave 5 RunForThisManyWaves 1 InitialCooldown 10 CooldownTime 60 DesiredCount 2 TFBot { Template T_TFBot_Engineer_Sentry_Tele_Battle // no telein ClassIcon engineer_telein } } Mission { Objective Engineer Where spawnbot BeginAtWave 7 RunForThisManyWaves 1 InitialCooldown 10 // 20 CooldownTime 9999 DesiredCount 21 // 16 // 4 TFBot { Template T_TFBot_Engineer_Sentry_Battle Name "Swarm Engie" CharacterAttributes { "move speed bonus" 1.3 } } } Mission { Objective DestroySentries Where spawnbot InitialCooldown 30 CooldownTime 30 BeginAtWave 1 RunForThisManyWaves 10 TFBot { Template T_TFBot_SentryBuster } } // WAVE 1 //////////CURRENCY 900/////////////////////////////////// Wave { StartWaveOutPut { Target wave_start_relay Action Trigger } DoneOutPut { Target wave_finished_relay Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } ::ExtraSpawnPoints <- //squads won't spawn if the botslots leave, which happens if the server is empty for too long w/o changing maps. { Cleanup = function() { delete ::ExtraSpawnPoints } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } //^cleanup stuff idk ask ficool2 function tagCheck() { if(activator.HasBotTag(`spawnbot_ihatethebug`)){ activator.Teleport(true,Vector(2200,4400,-600),false,QAngle(),false,Vector()) //the coords (on bigrock) teleport it into the pit's trigger_hurt behind the wall. } } function OnGameEvent_player_spawn(args) { local player = GetPlayerFromUserID(args.userid) if(NetProps.GetPropBool(player,`m_bIsABot`)) { EntFireByHandle(player, `runscriptcode`, `ExtraSpawnPoints.tagCheck()`, 0.1, player, null) } } OnGameEvent_player_death = function(params) { local player = GetPlayerFromUserID(params.userid) if (!player) return AddThinkToEnt(player, null) } } __CollectGameEventCallbacks(ExtraSpawnPoints) " } WaveSpawn // If slots don't leave this should never spawn and won't stall the wave. If they do, this prevents it from softlocking entirely at the cost of making the wave start a few seconds late. { Where respawnpoints TotalCount 22 SpawnCount 22 Support Limited WaitBeforeStarting 1 TFBot { Template T_TFBot_Scout_Melee Tag spawnbot_ihatethebug ClassIcon scout_bat_nys Name Slot Attributes IgnoreFlag } } WaveSpawn { Name stage1 Where spawnbot TotalCount 21 MaxActive 9 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 4 TotalCurrency 200 Squad { TFBot { Class Pyro } TFBot { // Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Class Heavyweapons } TFBot { // Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Class Heavyweapons } } } WaveSpawn { Name stage2 WaitForAllDead stage1 Where spawnbot TotalCount 18 MaxActive 6 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 8 TotalCurrency 150 Squad { TFBot { Template T_TFBot_Heavyweapons_Shotgun } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } } } WaveSpawn { Name stage2 WaitForAllDead stage1 Where spawnbot TotalCount 18 MaxActive 6 SpawnCount 3 WaitBeforeStarting 4 WaitBetweenSpawns 8 TotalCurrency 150 Squad { TFBot { Class Soldier Skill Normal } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast } } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot TotalCount 10 MaxActive 10 SpawnCount 5 WaitBeforeStarting 10 WaitBetweenSpawns 10 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Soldier_Crit } TFBot { // Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Class Heavyweapons } TFBot { // Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Class Heavyweapons } TFBot { // Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Class Heavyweapons } TFBot { // Template T_TFBot_Heavyweapons_Heavyweight_Champ_Fast Class Heavyweapons } } } WaveSpawn { // Name stage3 // WaitForAllSpawned stage2 Where spawnbot TotalCount 63 // 21 MaxActive 7 SpawnCount 7 WaitBeforeStarting 15 WaitBetweenSpawns 10 TotalCurrency 200 Support 1 TFBot { Template T_TFBot_Scout_Melee ClassIcon scout_bat_nys } } } // WAVE 2 //////////CURRENCY 800/////////////////////////////////// Wave { StartWaveOutPut { Target wave_start_relay Action Trigger } DoneOutPut { Target wave_finished_relay Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } " } WaveSpawn { Name stage1 Where spawnbot TotalCount 36 MaxActive 12 SpawnCount 6 WaitBeforeStarting 0 WaitBetweenSpawns 6 TotalCurrency 250 TFBot { Class Demoman Skill Normal } } WaveSpawn { Name stage2 // WaitForAllSpawned stage1 TotalCount 1 SpawnCount 1 WaitBeforeStarting 20 // 5 TotalCurrency 300 FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFTank deployed with 20k (20000) HP!`) EntFire(`tank_spawn_sound`,`Trigger`) " } Tank { Health 20000 Speed 75 Name tankboss Skin 0 // 0 - normal skin, 1 - final wave skin StartingPathTrackNode boss_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 25 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_Spammer } } WaveSpawn { // Name stage2 WaitForAllSpawned stage1 Where spawnbot TotalCount 50 // 21 MaxActive 10 SpawnCount 5 WaitBeforeStarting 15 WaitBetweenSpawns 10 TotalCurrency 150 Support 1 TFBot { Class Scout } } } // WAVE 3 //////////CURRENCY 800/////////////////////////////////// Wave { StartWaveOutPut { Target wave_start_relay Action Trigger } DoneOutPut { Target wave_finished_relay Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } " } WaveSpawn { Name stage1 Where spawnbot TotalCount 8 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 10 // 15 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Soldier_Crit } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot TotalCount 32 MaxActive 8 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 5 TotalCurrency 200 TFBot { Class Heavyweapons } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot TotalCount 8 MaxActive 4 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 5 TotalCurrency 200 TFBot { Template T_TFBot_Heavyweapons_Fist } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot TotalCount 8 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0 // 5 WaitBetweenSpawns 10 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Soldier_Crit } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Class Heavyweapons } TFBot { Class Heavyweapons } } } } // WAVE 4 //////////CURRENCY 700/////////////////////////////////// Wave { StartWaveOutPut { Target wave_start_relay Action Trigger } DoneOutPut { Target wave_finished_relay Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } " } WaveSpawn { Where spawnbot TotalCount 10 SpawnCount 10 TotalCurrency 50 TFBot { // Class Demoman Template T_TFBot_Demo_Burst Skill Normal Item "The Splendid Screen" // heheheha } } WaveSpawn { Name stage1 Where spawnbot TotalCount 3 MaxActive 3 // 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 20 TotalCurrency 200 TFBot { Template T_TFBot_Giant_HeavyWeapons } } WaveSpawn { Name stage1 TotalCount 1 SpawnCount 1 WaitBeforeStarting 15 TotalCurrency 300 FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFTank deployed with 30k (30000) HP!`) EntFire(`tank_spawn_sound`,`Trigger`) " } Tank { Health 30000 Speed 75 Name tankboss Skin 0 // 0 - normal skin, 1 - final wave skin StartingPathTrackNode boss_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } WaveSpawn { // Name stage1 Where spawnbot TotalCount 50 MaxActive 8 SpawnCount 4 WaitBeforeStarting 30 WaitBetweenSpawns 6 TotalCurrency 150 Support 1 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ } } } // WAVE 5 //////////CURRENCY 1200/////////////////////////////////// Wave // shorten the wave i guess??? { StartWaveOutPut { Target wave_start_relay Action Trigger } DoneOutPut { Target wave_finished_relay Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } " } WaveSpawn { Name giant_men Where spawnbot TotalCount 8 MaxActive 4 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 20 TotalCurrency 300 RandomChoice { TFBot { Template T_TFBot_Giant_Demo_Burst // man // ClassIcon demo_spammer } TFBot { Template T_TFBot_Heavyweapons_Heater Name "Giant Heater Heavy" } TFBot { Template T_TFBot_Giant_Pyro_DragonFury } } } WaveSpawn { WaitForAllDead giant_men Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 20 TotalCurrency 250 Squad { TFBot { Template T_TFBot_Giant_Demo_Burst } TFBot { Template T_TFBot_Giant_Medic_Regen } } } WaveSpawn { Name stage1 Where spawnbot TotalCount 52 MaxActive 13 SpawnCount 13 WaitBeforeStarting 1 WaitBetweenSpawns 10 TotalCurrency 200 TFBot { Class Soldier Skill Normal } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot TotalCount 48 MaxActive 18 SpawnCount 6 WaitBeforeStarting 10 WaitBetweenSpawns 6 TotalCurrency 200 TFBot { Class Heavyweapons Skill Easy } } WaveSpawn { Where spawnbot TotalCount 100 MaxActive 4 SpawnCount 2 WaitBeforeStarting 20 WaitBetweenSpawns 20 TotalCurrency 100 Support 1 TFBot { Template T_TFBot_Pyro_Airblast } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot TotalCount 50 MaxActive 15 SpawnCount 5 WaitBeforeStarting 10 WaitBetweenSpawns 5 TotalCurrency 150 Support Limited RandomChoice { TFBot { Class Soldier Skill Normal ClassIcon soldier_giant } TFBot { Class Soldier Skill Normal ClassIcon soldier_giant } TFBot { Class Soldier Skill Normal ClassIcon soldier_giant } TFBot { Class Heavyweapons Skill Easy ClassIcon heavy_giant } } } WaveSpawn { WaitForAllSpawned stage3 Where spawnbot TotalCount 50 MaxActive 10 SpawnCount 5 WaitBeforeStarting 5 WaitBetweenSpawns 8 // TotalCurrency 150 Support 1 TFBot { Class Scout Skill Easy // Normal // Easy } } } // WAVE 6 //////////CURRENCY 2200/////////////////////////////////// Wave { StartWaveOutPut { Target wave_start_relay Action Trigger } DoneOutPut { Target wave_finished_relay Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } " } WaveSpawn { Name stage1 Where spawnbot TotalCount 16 MaxActive 8 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 4 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Heavyweapons_Fist } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage1 TotalCount 1 SpawnCount 1 WaitBeforeStarting 4 TotalCurrency 400 FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFTank deployed with 25k (25000) HP!`) EntFire(`tank_spawn_sound`,`Trigger`) " } Tank { Health 25000 Speed 75 Name tankboss Skin 0 // 0 - normal skin, 1 - final wave skin StartingPathTrackNode boss_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name commonsupport WaitForAllDead stage1 Where spawnbot TotalCount 100 MaxActive 10 SpawnCount 5 WaitBeforeStarting 0 WaitBetweenSpawns 8 TotalCurrency 400 Support 1 TFBot { Class Heavyweapons Skill Easy MaxVisionRange 800 } } WaveSpawn { Name stage2 WaitForAllSpawned stage1 Where spawnbot TotalCount 9 MaxActive 6 SpawnCount 3 WaitBeforeStarting 15 WaitBetweenSpawns 20 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Soldier Attributes AlwaysCrit } TFBot { Template T_TFBot_Giant_Pyro_Flare_Spammer_Real // T_TFBot_Giant_Demoman_PrinceTavish_NoCharge } TFBot { Template T_TFBot_Giant_Pyro_Flare_Spammer_Real // T_TFBot_Giant_Demoman_PrinceTavish_NoCharge } } // melee ai kept making the squad act wrong } WaveSpawn { Name stage2 WaitForAllSpawned stage1 TotalCount 1 SpawnCount 1 WaitBeforeStarting 20 TotalCurrency 400 FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFTank deployed with 30k (30000) HP!`) EntFire(`tank_spawn_sound`,`Trigger`) " } Tank { Health 30000 Speed 75 Name tankboss Skin 0 // 0 - normal skin, 1 - final wave skin StartingPathTrackNode boss_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 Where spawnbot TotalCount 8 // 16 MaxActive 8 SpawnCount 4 WaitBeforeStarting 25 WaitBetweenSpawns 20 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Soldier_Spammer } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Medic_QuickUber } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { Name stage3 WaitForAllSpawned stage2 TotalCount 1 SpawnCount 1 WaitBeforeStarting 25 TotalCurrency 400 FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " ClientPrint(null,3,`\x0799CCFFTank deployed with 27.5k (27500) HP!`) EntFire(`tank_spawn_sound`,`Trigger`) " } Tank { Health 27500 Speed 75 Name tankboss Skin 0 // 0 - normal skin, 1 - final wave skin StartingPathTrackNode boss_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } } // WAVE 7 //////////CURRENCY 000/////////////////////////////////// Wave { StartWaveOutPut { Target wave_start_relay_boss Action Trigger } InitWaveOutPut { Target wave_start_relay Action RunScriptCode Param " IncludeScript(`tankextensions_main`, getroottable()) IncludeScript(`tankextensions/ubertank`, getroottable()) TankExt.StartingPathNames([ // map path `boss_path_1` ]) ::ExtraSpawnPoints <- //moving the tank icon's bot OOB so that players won't witness it. { Cleanup = function() { delete ::ExtraSpawnPoints } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } //^cleanup stuff idk ask ficool2 function tagCheck() { if(activator.HasBotTag(`spawnbot_tankicon`)){ activator.Teleport(true,Vector(2200,4400,-600),false,QAngle(),false,Vector()) //the coords (on bigrock) teleport it into the pit's trigger_hurt behind the wall. } } function OnGameEvent_player_spawn(args) { local player = GetPlayerFromUserID(args.userid) if(NetProps.GetPropBool(player,`m_bIsABot`)) { EntFireByHandle(player, `runscriptcode`, `ExtraSpawnPoints.tagCheck()`, 0.1, player, null) } } OnGameEvent_player_death = function(params) { local player = GetPlayerFromUserID(params.userid) if (!player) return AddThinkToEnt(player, null) } } __CollectGameEventCallbacks(ExtraSpawnPoints) //Kill the duped path marker. for ( local ent; ent = Entities.FindByClassname(ent, `prop_dynamic`); ) { local hammerid = NetProps.GetPropInt(ent, `m_iHammerID`) if( hammerid == 145380 ) ent.Kill() } " } WaveSpawn { Name stage1 Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 4 TFBot { Class Soldier Name "Captain Comch" ClassIcon soldier_conch_spammer Attributes UseBossHealthBar Skill Expert Health 30000 WeaponRestrictions PrimaryOnly Attributes HoldFireUntilFullReload Attributes MiniBoss Attributes SpawnWithFullCharge Item "The Concheror" Item "The Team Captain" Item "The Diplomat" Item gentlemanne_rocketlauncher_coffinnail ItemAttributes { ItemName gentlemanne_rocketlauncher_coffinnail set_item_texture_wear 0 // Makes the weapon look nice "faster reload rate" -0.8 "fire rate bonus" 0.5 "Projectile speed increased" 0.65 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 3 "increase buff duration" 18.0 "airblast vertical vulnerability multiplier" 0.1 "rage giving scale" 0.25 } } FirstSpawnOutPut { Target wave_start_relay Action RunScriptCode Param " SendGlobalGameEvent(`show_annotation`, { //add a pointer. text = `Destroy the Chief first!` lifetime = 10 worldPosX = -2045 worldPosY = 5157 worldPosZ = 130 id = 111 play_sound = `misc/null.wav` }) " } DoneOutput { Target wave_start_relay Action RunScriptCode Param " EntFire(`ubertank*`,`CallScriptFunction`,`ToggleUber`) EntFire(`ubertank*`,`SetSpeed`,`75`) ClientPrint(null,3,`\x0799CCFFThe Uber-Tank is now vulnerable with 20k (20000) HP!`) " } } WaveSpawn { Name OObertank Where spawnbot TotalCount 1 SpawnCount 1 WaitBeforeStarting 0.5 Support Limited FirstSpawnOutPut { Target tank_spawn_sound Action Trigger } RandomChoice { Squad { Tank { Health 20000 Speed 65 // 75 Name ubertank|0|-1 Skin 1 // 0 - normal skin, 1 - final wave skin StartingPathTrackNode boss_path_1 // if this is not here have fun with the hatch tank OnKilledOutput // output sent when the Tank is killed (almost never used) { Target tank_died_relay Action Trigger } OnBombDroppedOutput // output sent when the Tank drops its bomb once it reaches the end of its path { Target boss_deploy_relay Action Trigger } } } } } WaveSpawn { WaitForAllDead OObertank Where respawnpoints // spawning in a blu spawn into this navless area makes it invuln 24/7 TotalCount 1 SpawnCount 1 WaitBeforeStarting 0 TFBot { Template T_TFBot_Giant_Scout Name Uber-Tank ClassIcon tank_uber_lite Tag spawnbot_tankicon Scale 0.01 Attributes SuppressFire CharacterAttributes { // "Health Regen" -9999 } } } } }