// ADVANCED MISSION BY NIGHTTIME71 // MAP MADE BY https://steamcommunity.com/profiles/76561199125109082 #base robot_giant.pop #base robot_standard.pop WaveSchedule { StartingCurrency 1000 RespawnWaveTime 5 CanBotsAttackWhileInSpawnRoom no Templates { T_TFBot_Molotov_Demo { Class Demoman Skill Normal Tag molotov WeaponRestrictions MeleeOnly Attributes AlwaysFireWeapon ClassIcon demo_fire Name "Molotov Demo" ItemAttributes { ItemName "TF_WEAPON_BOTTLE" "attach particle effect" 13 "melee bounds multiplier" 15 "melee attack rate bonus" 6 } CharacterAttributes { "damage bonus" 0 } } T_TFBot_Cannon_Demo { Class Demoman Item "The Loose Cannon" Skill Normal ClassIcon demo_cannon Name "Cannon Demo" ItemAttributes { ItemName "The Loose Cannon" "grenade launcher mortar mode" -1 } } T_TFBot_Soldier_Melee_Armored { Class Soldier Skill Expert WeaponRestrictions MeleeOnly ClassIcon soldier_shovel_armored_yoovy Name "Tomb Digger" Health 1200 Scale 1.5 CharacterAttributes { "damage force reduction" 0.8 "move speed bonus" 0.85 "head scale" 0.8 } } T_TFBot_Giant_Cannon_Demo { Class Demoman Item "The Loose Cannon" Skill Expert ClassIcon demo_cannon_giant Name "Giant Cannon Demo" Health 3300 Attributes MiniBoss ItemAttributes { ItemName "The Loose Cannon" "grenade launcher mortar mode" -1 "auto fires full clip" 1 "auto fires when full" 1 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } T_TFBot_Giant_Demoman_Burst_Loch { Class Demoman Item "The Loch-n-Load" Skill Expert ClassIcon demo_lochnload_sif Name "Giant Burst Fire Demo" Health 3300 Attributes MiniBoss Attributes HoldFireUntilFullReload ItemAttributes { ItemName "The Loch-n-Load" "clip size bonus" 5 "fire rate bonus" 0.05 "dmg bonus vs buildings" 1.5 "dmg penalty vs players" 0.5 "faster reload rate" 0.5 "sticky air burst mode" 0 "fuse bonus" 0.35 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } T_TFBot_Heavy_Steak_Warrior { Class Heavy Skill Hard Name "Steak Heavy" Item "The Buffalo Steak Sandvich" Item "Warrior's Spirit" WeaponRestrictions MeleeOnly Attributes AlwaysFireWeapon ClassIcon heavy_steak_lite ItemAttributes { ItemName "The Buffalo Steak Sandvich" "max health additive bonus" 1 "force weapon switch" 1 "single wep deploy time increased" 0.01 } ItemAttributes { ItemName "Warrior's Spirit" "mult_dmgtaken_active" 1 } } T_TFBot_Giant_Heavy_Steak_Warrior { Class Heavy Skill Expert Name "Super Steak Heavy" Item "The Buffalo Steak Sandvich" Item "Warrior's Spirit" WeaponRestrictions MeleeOnly Attributes MiniBoss Attributes AlwaysFireWeapon Health 5000 ClassIcon heavy_steak_lite ItemAttributes { ItemName "The Buffalo Steak Sandvich" "max health additive bonus" 1 "force weapon switch" 1 "single wep deploy time increased" 0.01 } ItemAttributes { ItemName "Warrior's Spirit" "fire rate bonus" 0.6 } CharacterAttributes { "move speed bonus" 0.7 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } } T_TFBot_Kritzkrieg_Medic { Name "Kritzkrieg Medic" Class Medic ClassIcon medic_kritz Skill Expert Attributes SpawnWithFullCharge Item "The Kritzkrieg" WeaponRestrictions SecondaryOnly ItemAttributes { ItemName "The Kritzkrieg" "uber duration bonus" 600 "ubercharge rate bonus" 900 } CharacterAttributes { "bot medic uber health threshold" 9999 } } T_TFBot_Persian_Demoknight { Class Demoman ClassIcon demoknight_persian_nys Skill Hard Item "Sultan's Ceremonial" Item "Ali Baba's Wee Booties" Item "The Persian Persuader" Item "The Splendid Screen" Name "Persian Knight" ItemAttributes { ItemName "The Splendid Screen" "Attack not cancel charge" 1 } WeaponRestrictions MeleeOnly CharacterAttributes { "critboost on kill" 3 } } T_TFBot_Giant_Boxing_Heavy_GRU { Class heavyweapons Name "Super Heavyweight Champ" ClassIcon heavy_gru_giant Skill expert Health 5000 Item "Gloves of Running Urgently MvM" WeaponRestrictions MeleeOnly Attributes MiniBoss ItemAttributes { ItemName "Gloves of Running Urgently MvM" "fire rate bonus" 0.6 "damage bonus" 1.2 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.3 "airblast vulnerability multiplier" 0.3 "override footstep sound set" 2 } } T_TFBot_Homewrecker_Pyro { Class Pyro Item "The Homewrecker" WeaponRestrictions MeleeOnly ClassIcon pyro_homewrecker_lite Skill Normal Name "Homewrecker" } T_TFBot_Homewrecker_Pyro_Armored { Class Pyro Item "The Homewrecker" WeaponRestrictions MeleeOnly ClassIcon pyro_homewrecker_lite_armored Health 1200 Scale 1.6 Skill Hard Item "The Juggernaut Jacket" Name "Armored Homewrecker" CharacterAttributes { "dmg pierces resists absorbs" 1 "hand scale" 1.6 "head scale" 0.7 "move speed bonus" 0.85 } } T_TFBot_Steel_Mannlet { Class Heavy WeaponRestrictions MeleeOnly Item "Fists of Steel" Skill Hard Name "Steel Mannlet" ClassIcon heavy_steelfist_nys } T_TFBot_Dragon_Fury_Pyro { Class Pyro Item "The Dragon's Fury" ClassIcon pyro_dragon_fury_swordstone MaxVisionRange 1000 } T_TFBot_Giant_Dragon_Fury_Pyro { Class Pyro Item "The Dragon's Fury" ClassIcon pyro_dragon_fury_swordstone_giant MaxVisionRange 1000 Health 3000 Attributes MiniBoss Skill Expert Name "Giant Pyro" CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.6 "airblast vulnerability multiplier" 0.6 "override footstep sound set" 6 } } T_TFBot_Charged_Soldier { Class Soldier Name "Charged Soldier" ClassIcon soldier_crit Skill Normal Item "The Original" Attributes AlwaysCrit ItemAttributes { ItemName "The Original" "faster reload rate" 0.2 "fire rate bonus" 2 "Projectile speed increased" 0.5 } } T_TFBot_Brass_Beast_TURBO { Class Heavy Tag gatling Item "The Brass Beast" Health 650 Scale 1.4 ClassIcon heavy_brass Item "The Eliminators Safeguard" Name "Gatling Gunner" ItemAttributes { ItemName "The Eliminators Safeguard" "item style override" 1 } CharacterAttributes { "fire rate bonus" 0.4 "damage bonus" 0.7 } } T_TFBot_Demoman_Stickybomb { Class Demoman Skill Expert ClassIcon demo_sticky_daan WeaponRestrictions SecondaryOnly Name "Stickybomb Demo" ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "is_passive_weapon" 1 "override projectile type" 27 // Fires nothing "fire rate penalty" 99 // No grenade launcher firing animations. } ItemAttributes { ItemName "TF_WEAPON_PIPEBOMBLAUNCHER" "stickybomb charge rate" 0.001 //Demo-bot will fire Stickybomb immediately "max pipebombs decreased" -7 // 1 Stickybomb deployed, will explode when another is fired "projectile range increased" 0.5 // Prevents overshooting target } } T_TFBot_Heavyweapons_Deflector { Class Heavyweapons Name "Deflector Heavy" ClassIcon heavy_deflector Skill Hard Item "The U-clank-a" Item "Deflector" WeaponRestrictions PrimaryOnly MaxVisionRange 1200 ItemAttributes { ItemName "Deflector" "attack projectiles" 1 // force ability to shoot down projectiles } } T_TFBot_Giant_Soldier_BurstFire_Hyper { Class Soldier Name "Giant Burst Fire Soldier" ClassIcon soldier_burstfire_hyper 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 } } T_TFBot_Giant_Medic_Uber_AntiBurst { Class Medic Name "Giant Anti-Burst Medic" ClassIcon medic_uber_giant Skill Expert Health 4500 Attributes SpawnWithFullCharge WeaponRestrictions SecondaryOnly Attributes MiniBoss Tag uber_on_burst ItemAttributes { ItemName "TF_WEAPON_SYRINGEGUN_MEDIC" "damage penalty" 0.1 } ItemAttributes { ItemName "TF_WEAPON_MEDIGUN" "heal rate bonus" 200 "ubercharge rate bonus" 200 "uber duration bonus" -6.5 // 1.5 sec uber } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.6 "airblast vulnerability multiplier" 0.6 "bot medic uber deploy delay duration" 999 // cannot pop uber without tag } } T_TFBot_Giant_Demo_Burst_Hyper { Class Demoman Name "Giant Burst Fire Demo" ClassIcon demo_burst_hyper_lite Health 3300 Skill Expert WeaponRestrictions PrimaryOnly Attributes MiniBoss Attributes HoldFireUntilFullReload ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "damage bonus" 2 "faster reload rate" 0.4 "fire rate bonus" 0.2 "clip size upgrade atomic" 7.0 "projectile spread angle penalty" 5 "Projectile speed increased" 2 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.4 "airblast vulnerability multiplier" 0.4 "override footstep sound set" 4 } } T_TFBot_Giant_Demo_Stickybomb_Burst { Class Demoman Skill Expert Attributes MiniBoss Attributes HoldFireUntilFullReload Health 3300 ClassIcon demo_sticky_burst WeaponRestrictions SecondaryOnly Name "Giant Burst Stickybomber" Item "The Scottish Resistance" ItemAttributes { ItemName "TF_WEAPON_GRENADELAUNCHER" "is_passive_weapon" 1 "override projectile type" 27 "fire rate penalty" 99 } ItemAttributes { ItemName "The Scottish Resistance" "stickybomb charge rate" 0.001 "projectile range increased" 0.4 "fire rate bonus" -2 "faster reload rate" 0.75 "projectile spread angle penalty" 12 "max pipebombs increased" 0 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } T_TFBot_Bazooka_Soldier { Class Soldier Item "The Beggar's Bazooka" Skill Normal ClassIcon soldier_bazooka Name "Bazooka Soldier" ItemAttributes { ItemName "The Beggar's Bazooka" "auto fires full clip" 1 "auto fires when full" 1 } } T_TFBot_Soldier_Bison { Class Soldier Skill Normal WeaponRestrictions SecondaryOnly ClassIcon soldier_bison Item "The Righteous Bison" Name "Bison Soldier" } T_TFBot_Giant_Demoknight_Shieldless { Class Demoman ClassIcon demoknight_giant Name "Giant Demoknight" Skill Expert Health 3300 Item "Prince Tavish's Crown" Item "The Eyelander" Item "Ali Baba's Wee Booties" WeaponRestrictions MeleeOnly Attributes MiniBoss ItemAttributes { ItemName "The Eyelander" "critboost on kill" 3 } CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } } Mission // sentry buster { Objective DestroySentries InitialCooldown 5 Where spawnbot BeginAtWave 1 RunForThisManyWaves 9 CooldownTime 30 TFBot { Template T_TFBot_SentryBuster } } Mission // w1 sniper { Objective Sniper InitialCooldown 45 Where spawnbot_mission_sniper BeginAtWave 1 RunForThisManyWaves 1 DesiredCount 2 CooldownTime 45 TFBot { Template T_TFBot_Sniper } } Wave // $500 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param "NetProps.SetPropInt(Entities.FindByClassname(null, `worldspawn`), `m_takedamage`, 1) ::molotov <- { Cleanup = function() { delete ::molotov } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnScriptHook_OnTakeDamage(params) { if(params.attacker.GetTeam() == 3) { if(params.attacker.HasBotTag(`molotov`)) { if(params.const_entity == Entities.FindByClassname(null,`worldspawn`)) { PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `spell_fireball_tendril_parent_red`}) PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `heavy_ring_of_fire_child01`}) PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `ExplosionCore_buildings`}) local trace = { start = params.attacker.EyePosition() end = params.attacker.EyeAngles().Forward()*99999+Vector(0,0,-1800) ignore = params.attacker } TraceLineEx(trace) local point = Entities.CreateByClassname(`info_target`) point.DispatchSpawn() point.SetOrigin(trace.endpos) local origin = point.GetOrigin() DispatchParticleEffect(`spell_fireball_tendril_parent_red`, Vector(origin.x,origin.y,origin.z), Vector(1, 0, 0)) DispatchParticleEffect(`heavy_ring_of_fire_child01`, Vector(origin.x,origin.y,origin.z-20), Vector(1, 0, 0)) point.EmitSound(`Jar.Explode`) EntFireByHandle(point, `RunScriptCode`, `molotov.buff(self)`, 1, null, null) EntFireByHandle(point, `RunScriptCode`, `molotov.buff(self)`, 2, null, null) EntFireByHandle(point, `RunScriptCode`, `molotov.buff(self)`, 3, null, null) EntFireByHandle(point, `RunScriptCode`, `molotov.buff(self)`, 4, null, null) EntFireByHandle(point, `RunScriptCode`, `molotov.buff(self)`, 5, null, null) EntFireByHandle(point, `RunScriptCode`, `molotov.buff(self)`, 6, null, null) EntFireByHandle(point, `RunScriptCode`, `molotov.remove(self)`, 7, null, null) } } } } buff = function(point) { local origin = point.GetOrigin() DispatchParticleEffect(`heavy_ring_of_fire_child01`, Vector(origin.x,origin.y,origin.z-20), Vector(1, 0, 0)) for (local victim = null; (victim = Entities.FindByClassnameWithin(victim, `player`, origin, 150)) != null; ) { if(victim.GetTeam() == 2) { victim.TakeDamage(15,8,null) victim.IgnitePlayer() } } for (local sentry = null; (sentry = Entities.FindByClassnameWithin(sentry, `obj_*`, origin, 150)) != null; ) { if(sentry.GetTeam() == 2) { local hp = NetProps.GetPropInt(sentry,`m_iHealth`) NetProps.SetPropInt(sentry,`m_iHealth`,hp*0.99-5) if(hp <= 1) { DispatchParticleEffect(`ExplosionCore_buildings`, sentry.GetCenter(), Vector(1, 0, 0)) sentry.EmitSound(`Building_Sentry.Explode`) sentry.Kill() } } } } remove = function(point) { point.Destroy() } }__CollectGameEventCallbacks(molotov) " } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "w1a" Where spawnbot TotalCount 20 MaxActive 8 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 0.4 TotalCurrency 50 TFBot { Template T_TFBot_Molotov_Demo } } WaveSpawn { Name "w1a2" Where spawnbot Where spawnbot_left RandomSpawn 1 TotalCount 12 MaxActive 12 SpawnCount 2 WaitBeforeStarting 8 WaitBetweenSpawns 4 TotalCurrency 50 TFBot { Class Heavy Name "Heater Heavy" ClassIcon heavy_heater Item "The Huo Long Heatmaker" } } WaveSpawn { WaitForAllSpawned "w1a" Support 1 Where spawnbot Where spawnbot_left RandomSpawn 1 TotalCount 48 MaxActive 8 SpawnCount 4 WaitBeforeStarting 0.5 WaitBetweenSpawns 0 TotalCurrency 100 TFBot { Template T_TFBot_Demoman_Knight } } WaveSpawn { Name "w1b" Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 30 WaitBetweenSpawns 15 TotalCurrency 50 TFBot { Template T_TFBot_Giant_DemoMan_PrinceTavish } } WaveSpawn { WaitForAllSpawned "w1a2" Name "w1b2" Where spawnbot Where spawnbot_left RandomSpawn 1 TotalCount 18 MaxActive 6 SpawnCount 3 WaitBeforeStarting 32 WaitBetweenSpawns 3 TotalCurrency 50 TFBot { Template T_TFBot_Cannon_Demo } } WaveSpawn { WaitForAllSpawned "w1a2" Name "w1c" Where spawnbot TotalCount 6 MaxActive 6 SpawnCount 3 WaitBeforeStarting 40 WaitBetweenSpawns 25 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Demo_Stickybomb_Burst } TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner } TFBot { Template T_TFBot_Soldier_Extended_Buff_Banner } } } } Mission // w2 spies { Objective Spy InitialCooldown 20 Where spawnbot_mission_sniper BeginAtWave 2 RunForThisManyWaves 1 DesiredCount 2 CooldownTime 60 TFBot { Template T_TFBot_Spy } } Wave // w2 $700 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param "local particle1 = SpawnEntityFromTable(`info_particle_system`,{targetname=`particle01`,effect_name=`moon_drill_rock_debris`,origin=`3669 266 -52`,start_active=1}) local particle2 = SpawnEntityFromTable(`info_particle_system`,{targetname=`particle02`,effect_name=`moon_drill_rock_debris`,origin=`3678 -736 9`,start_active=1}) local annotation = SpawnEntityFromTable(`training_annotation`,{targetname=`annotation01`,origin=`3669 266 -52`,offset=100,lifetime=7,display_text=`Watch out for digging robots!`}) EntFire(`annotation01`,`show`,null,10) EntFire(`annotation01`,`addoutput`,`display_text They will spawn in these zones!`,18) EntFire(`annotation01`,`show`,null,18) EntFire(`annotation01`,`addoutput`,`origin 3678 -736 9`,25) EntFire(`annotation01`,`show`,null,25) ::spawner <- { Cleanup = function() { delete ::spawner } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnGameEvent_player_spawn(params) { local robot = GetPlayerFromUserID(params.userid); if (robot.GetTeam() == 3) { EntFireByHandle(robot, `RunScriptCode`, `spawner.spawn(self)`, -1.0, null, null) } } spawn = function(robot) { if(robot.HasBotTag(`spawnA`)) { PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `mvm_wood_boards_destroy`}) robot.SetOrigin(particle1.GetOrigin()) robot.RemoveBotTag(`spawnA`) DispatchParticleEffect(`mvm_wood_boards_destroy`, robot.GetOrigin(), Vector(0, 0, 0)) PrecacheSound(`ambient/machines/thumper_dust.wav`) particle1.EmitSound(`ambient/machines/thumper_dust.wav`) } if(robot.HasBotTag(`spawnB`)) { PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `mvm_wood_boards_destroy`}) robot.SetOrigin(particle2.GetOrigin()) robot.RemoveBotTag(`spawnB`) DispatchParticleEffect(`mvm_wood_boards_destroy`, robot.GetOrigin(), Vector(1, 0, 0)) PrecacheSound(`ambient/machines/thumper_dust.wav`) particle2.EmitSound(`ambient/machines/thumper_dust.wav`) } } }__CollectGameEventCallbacks(spawner) " } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "w2a" Where spawnbot Where spawnbot_chief Where spawnbot_left TotalCount 12 MaxActive 8 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 2 TotalCurrency 100 TFBot { Class Pyro } } WaveSpawn { Name "w2a2" Where spawnbot TotalCount 12 MaxActive 12 SpawnCount 2 WaitBeforeStarting 12 WaitBetweenSpawns 6 TotalCurrency 50 TFBot { Template T_TFBot_Persian_Demoknight } } WaveSpawn { WaitForAllSpawned "w2a" Name "w2b" Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 5 WaitBetweenSpawns 15 TotalCurrency 100 TFBot { Template T_TFBot_Persian_Demoknight Attributes MiniBoss Health 3300 Name "Giant Persian Knight" ClassIcon demoknight_persian_nys_giant CharacterAttributes { "move speed bonus" 0.5 "damage force reduction" 0.5 "airblast vulnerability multiplier" 0.5 "override footstep sound set" 4 } } } WaveSpawn { Where spawnbot TotalCount 20 MaxActive 20 SpawnCount 5 WaitBeforeStarting 12 WaitBetweenSpawns 12 TotalCurrency 100 Support Limited RandomChoice { TFBot { Class Soldier WeaponRestrictions MeleeOnly ClassIcon soldier_shovel Tag spawnA Skill Expert Name "Tomb Digger" } TFBot { Class Soldier WeaponRestrictions MeleeOnly ClassIcon soldier_shovel Tag spawnB Skill Expert Name "Tomb Digger" } } } WaveSpawn { WaitForAllSpawned "w2b" Name "w2b2" Where spawnbot Where spawnbot_left RandomSpawn 1 TotalCount 20 MaxActive 15 SpawnCount 5 WaitBeforeStarting 24 WaitBetweenSpawns 8 TotalCurrency 50 TFBot { Class Scout Skill Normal CharacterAttributes { "spread penalty" 2 } } } WaveSpawn { WaitForAllSpawned "w2b" Name "w2b2" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 30 WaitBetweenSpawns 12 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { WaitForAllSpawned "w2b" Name "w2c" Where spawnbot Where spawnbot_left RandomSpawn 1 TotalCount 20 MaxActive 15 SpawnCount 5 WaitBeforeStarting 35 WaitBetweenSpawns 0 TotalCurrency 100 TFBot { Class Demoman Skill Hard } } WaveSpawn { WaitForAllSpawned "w2b" Name "w2c2" Where spawnbot TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 36 WaitBetweenSpawns 18 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Cannon_Demo CharacterAttributes { "faster reload rate" -0.8 } } } WaveSpawn { WaitForAllSpawned "w2c" Name "w2d" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 15 WaitBetweenSpawns 0 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Scout_Fast } } } Mission // w3 engineer { Objective Engineer InitialCooldown 35 Where spawnbot_mission_sniper BeginAtWave 3 RunForThisManyWaves 1 DesiredCount 2 CooldownTime 35 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot_left TeleportWhere spawnbot_right } } Wave // w3 $1000 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param "SpawnEntityFromTable(`item_teamflag`{targetname=`intel2`,origin=`0 0 -2000`,ReturnTime=60000,TeamNum=3,GameType=1,flag_model=`models/props_td/atom_bomb.mdl`,ReturnBetweenWaves=1}) EntFire(`nav_avoid*`, `disable`,null,1) EntFire(`hologram*`,`enable`,null,1) EntFire(`particle0*`,`kill`,null,0) EntFire(`annotation01`,`kill`,null,0) ClientPrint(null,3,`\x07A0FFFFThere are TWO bombs on this wave. Defend both paths!`) ClientPrint(null,4,`\x03There are TWO bombs on this wave. Defend both paths!`) " } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "w3a" Where spawnbot_left TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 4 TotalCurrency 25 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { WaitForAllDead "w3a" Name "w3b" Where spawnbot_right TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 0.2 TotalCurrency 50 FirstSpawnWarningSound "vo\mvm_another_bomb04.mp3" TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { WaitForAllDead "w3a" Where spawnbot_right Where spawnbot_left RandomSpawn 1 TotalCount 100 MaxActive 12 SpawnCount 8 WaitBeforeStarting 4.5 WaitBetweenSpawns 30 TotalCurrency 100 Support 1 TFBot { Template T_TFBot_Scout_Bonk Name "Bonk Scout" } } WaveSpawn { WaitForAllDead "w3a" TotalCurrency 100 TotalCount 1 WaitBeforeStarting 20 Tank { Health 10000 Speed 75 Name "tankboss" StartingPathTrackNode "boss_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead "w3a" Name "w3c" Where spawnbot_left Where spawnbot_right RandomSpawn 1 TotalCount 20 MaxActive 20 SpawnCount 4 WaitBeforeStarting 10 WaitBetweenSpawns 10 TotalCurrency 50 TFBot { Template T_TFBot_Dragon_Fury_Pyro } } WaveSpawn { WaitForAllDead "w3b" Name "w3c2" Where spawnbot RandomSpawn 1 TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 10 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon } } WaveSpawn { WaitForAllSpawned "w3c" Name "w3d" Where spawnbot_left Where spawnbot_right RandomSpawn 1 TotalCount 20 MaxActive 10 SpawnCount 5 WaitBeforeStarting 10 WaitBetweenSpawns 0 TotalCurrency 100 TFBot { Class Soldier Skill Normal } } WaveSpawn { WaitForAllSpawned "w3c" Name "w3d2" Where spawnbot_right Where spawnbot_left TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 30 WaitBetweenSpawns 30 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Scout_Fast } } WaveSpawn { WaitForAllSpawned "w3c" TotalCurrency 100 TotalCount 1 WaitBeforeStarting 0 Tank { Health 10000 Speed 75 Name "tankboss" StartingPathTrackNode "boss_path2_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead "w3c2" Name "w3d2" Where spawnbot RandomSpawn 1 TotalCount 3 MaxActive 3 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 10 TotalCurrency 125 TFBot { Template T_TFBot_Giant_Pyro Attributes AlwaysFireWeapon } } WaveSpawn { WaitForAllSpawned "w3d" Where spawnbot_left Where spawnbot_right RandomSpawn 1 TotalCount 40 MaxActive 4 SpawnCount 2 WaitBeforeStarting 1 WaitBetweenSpawns 0 TotalCurrency 150 Support 1 TFBot { Class Heavy Item "The Huo Long Heatmaker" ClassIcon heavy_heater Name "Heater Heavy" } } } Mission // w4 sniper { Objective Sniper InitialCooldown 25 Where spawnbot_mission_sniper BeginAtWave 4 RunForThisManyWaves 1 DesiredCount 2 CooldownTime 25 TFBot { Template T_TFBot_Sniper } } Mission // w4 spies { Objective Spy InitialCooldown 120 Where spawnbot_mission_sniper BeginAtWave 4 RunForThisManyWaves 1 DesiredCount 2 CooldownTime 20 TFBot { Template T_TFBot_Spy } } Wave // w4 $750 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param "EntFire(`intel2`,`kill`) ::boss <- { Cleanup = function() { delete ::boss } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnGameEvent_player_spawn(params) { local robot = GetPlayerFromUserID(params.userid); if(robot.GetTeam() == 3) { EntFireByHandle(robot, `RunScriptCode`, `boss.model(self)`, 0, null, null) } } model = function(robot) { if(robot.HasBotTag(`boss`)) { EntFireByHandle(robot, `SetCustomModelWithClassAnimations`, `models/bots/demo/bot_sentry_buster.mdl`, -1, null, null) } } }__CollectGameEventCallbacks(boss) " } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Name "w4boss" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 3 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Cannon_Demo Tag boss Health 30000 BehaviorModifiers push Scale 1.9 Attributes AlwaysFireWeapon Attributes UseBossHealthBar ClassIcon sentry_buster2 Item "The Bomber Knight" Name "Bomb Head" ItemAttributes { ItemName "The Loose Cannon" "clip size bonus" 2 "fire rate bonus" 0.1 "projectile spread angle penalty" 180 "projectile range increased" 0.5 "grenade damage reduction on world contact" 7 "fuse bonus" 1.75 //"use large smoke explosion" 1 } CharacterAttributes { "cannot pick up intelligence" 1 "move speed bonus" 0.4 "dmg taken from blast increased" 2 "dmg taken from fire increased" 2 "SET BONUS: dmg from sentry reduced" 2 "head scale" 3 "torso scale" 0 } } } WaveSpawn { Name "w4a" Where spawnbot Where spawnbot_left RandomSpawn 1 TotalCount 20 MaxActive 12 SpawnCount 4 WaitBeforeStarting 6 WaitBetweenSpawns 6 TotalCurrency 100 TFBot { Class Heavy } } WaveSpawn { WaitForAllSpawned "w4a" Name "w4b" Where spawnbot_left Where spawnbot_right RandomSpawn 1 TotalCount 16 MaxActive 16 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 1 TotalCurrency 100 Squad { TFBot { Class Soldier Skill Normal ClassIcon soldier_directhit Item "The Direct Hit" } TFBot { Template T_TFBot_Medic_QuickUber } } } WaveSpawn { WaitForAllSpawned "w4b" Name "w4c" Where spawnbot RandomSpawn 1 TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 25 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Demo_Stickybomb_Burst } TFBot { Template T_TFBot_Kritzkrieg_Medic Health 900 Scale 1.5 ClassIcon medic_kritz2_armored_lite Item "Civilian Grade JACK Hat" Name "Armored Kritz Medic" CharacterAttributes { "damage force reduction" 0.8 "attach particle effect" 3149 } } } } WaveSpawn { WaitForAllSpawned "w4b" Name "w4c2" Where spawnbot_left Where spawnbot_right RandomSpawn 1 TotalCount 20 MaxActive 9 SpawnCount 3 WaitBeforeStarting 10 WaitBetweenSpawns 10 TotalCurrency 50 TFBot { Template T_TFBot_Soldier_Extended_Concheror } } WaveSpawn { WaitForAllSpawned "w4b" Name "w4c3" Where spawnbot RandomSpawn 1 TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 15 WaitBetweenSpawns 25 TotalCurrency 200 Squad { TFBot { Template T_TFBot_Giant_Dragon_Fury_Pyro } TFBot { Template T_TFBot_Kritzkrieg_Medic Health 900 Scale 1.5 ClassIcon medic_kritz2_armored_lite Item "Civilian Grade JACK Hat" Name "Armored Kritz Medic" CharacterAttributes { "damage force reduction" 0.8 "attach particle effect" 3149 } } } } } Mission // w5 engineer { Objective Engineer InitialCooldown 35 Where spawnbot_mission_sniper BeginAtWave 5 RunForThisManyWaves 1 DesiredCount 2 CooldownTime 35 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter TeleportWhere spawnbot_left TeleportWhere spawnbot_right } } Wave // w5 $750 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param " IncludeScript(`popextensions_main`, getroottable()) ::uber_on_burst <- { Cleanup = function() { delete ::uber_on_burst } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnGameEvent_player_hurt(params) { local robot = GetPlayerFromUserID(params.userid); if(robot.GetTeam()==3) { if(robot.HasBotTag(`uber_on_burst`)) { if (params.damageamount >= 500) { robot.PressAltFireButton(1) } } } } }__CollectGameEventCallbacks(uber_on_burst) " } StartWaveOutput { Target wave_start_relay Action trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 0 WaitBetweenSpawns 15 TotalCurrency 100 Squad { TFBot { Template T_TFBot_Giant_Soldier ClassIcon soldier_directhit_giant Item "The Direct Hit" } TFBot { Template T_TFBot_Giant_Medic_Uber_AntiBurst Item "dec2014 Surgeon's Shako" ItemAttributes { ItemName "dec2014 Surgeon's Shako" "set item tint rgb" 12073019 } } } } WaveSpawn { Name "w5a" Where spawnbot Where spawnbot_chief Where spawnbot_right Where spawnbot_left TotalCount 20 MaxActive 20 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 0.8 TotalCurrency 50 RandomSpawn 1 TFBot { Template T_TFBot_Soldier_Bison Skill Expert } } WaveSpawn { WaitForAllSpawned "w5a" Name "w5b" Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 2 WaitBeforeStarting 10 WaitBetweenSpawns 15 TotalCurrency 100 Squad { TFBot { Template T_TFBot_Giant_Soldier ClassIcon soldier_directhit_giant Item "The Direct Hit" } TFBot { Template T_TFBot_Giant_Medic_Uber_AntiBurst Item "dec2014 Surgeon's Shako" ItemAttributes { ItemName "dec2014 Surgeon's Shako" "set item tint rgb" 12073019 } } } } WaveSpawn { WaitForAllSpawned "w5b" Name "w5b2" Where spawnbot_left Where spawnbot TotalCount 20 MaxActive 10 SpawnCount 2 WaitBeforeStarting 7 WaitBetweenSpawns 0.5 TotalCurrency 100 RandomSpawn 1 TFBot { Template T_TFBot_Heavyweapons_Deflector } } WaveSpawn { WaitForAllSpawned "w5b2" Name "w5c2" Where spawnbot Where spawnbot_left TotalCount 20 MaxActive 5 SpawnCount 1 WaitBeforeStarting 12 WaitBetweenSpawns 2 TotalCurrency 50 RandomSpawn 1 TFBot { Class Pyro Skill Normal Item "Traffic Cone" ClassIcon pyro_reflect } } WaveSpawn { WaitForAllSpawned "w5b" Name "w5c" Where spawnbot TotalCount 6 MaxActive 6 SpawnCount 3 WaitBeforeStarting 24 WaitBetweenSpawns 48 TotalCurrency 150 Squad { TFBot { Template T_TFBot_Heavyweapons_Heater Name "Giant Heater Heavy" } TFBot { Class Heavy Skill Expert Item "The Huo Long Heatmaker" Name "Heavy Rain" ItemAttributes { ItemName "The Huo Long Heatmaker" "override projectile type" 6 "dmg penalty vs players" 0.5 "attach particle effect" 3042 } ClassIcon pyro_flare_rain_nys Health 900 Scale 1.4 Item "The Bunsen Brave" } TFBot { Class Heavy Skill Expert Item "The Huo Long Heatmaker" Name "Heavy Rain" ItemAttributes { ItemName "The Huo Long Heatmaker" "override projectile type" 6 "dmg penalty vs players" 0.5 "attach particle effect" 3042 } ClassIcon pyro_flare_rain_nys Health 900 Scale 1.4 Item "The Bunsen Brave" } } } WaveSpawn { WaitForAllSpawned "w5b2" Name "w5d" Where spawnbot_left TotalCount 6 MaxActive 6 SpawnCount 2 WaitBeforeStarting 24 WaitBetweenSpawns 12 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Demoman ClassIcon demo_spammer } } WaveSpawn { WaitForAllSpawned "w5b2" Where spawnbot_left TotalCount 50 MaxActive 5 SpawnCount 1 WaitBeforeStarting 20 WaitBetweenSpawns 0 TotalCurrency 100 Support 1 TFBot { Template T_TFBot_Heavyweapons_Shotgun } } } Wave // w6 $1000 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param "SpawnEntityFromTable(`item_teamflag`{targetname=`intel2`,origin=`0 0 -2000`,ReturnTime=60000,TeamNum=3,GameType=1,flag_model=`models/props_td/atom_bomb.mdl`,ReturnBetweenWaves=1}) EntFire(`nav_avoid*`, `disable`,null,1) EntFire(`hologram*`,`enable`,null,1) ClientPrint(null,3,`\x07A0FFFFThere are TWO bombs on this wave. Defend both paths!`) ClientPrint(null,4,`\x03There are TWO bombs on this wave. Defend both paths!`) EntFire(`target`,`kill`) " } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { Where spawnbot_left TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 0 Support Limited TFBot { Template T_TFBot_Demoman_Knight } } WaveSpawn { Where spawnbot_right TotalCount 4 MaxActive 4 SpawnCount 1 WaitBeforeStarting 1 WaitBetweenSpawns 0.1 TotalCurrency 0 Support Limited FirstSpawnWarningSound "vo\mvm_another_bomb04.mp3" TFBot { Template T_TFBot_Demoman_Knight } } WaveSpawn { Name "support1" Where spawnbot_left Where spawnbot_right TotalCount 50 MaxActive 15 SpawnCount 5 WaitBeforeStarting 2 WaitBetweenSpawns 0.4 TotalCurrency 100 Support Limited RandomChoice { TFBot { Template T_TFBot_Demoman_Knight } TFBot { Template T_TFBot_Demoman_Knight } TFBot { Template T_TFBot_Demoman_Knight } TFBot { Template T_TFBot_Demoman_Knight } TFBot { Class Scout Skill Hard } } } WaveSpawn { Where spawnbot_left Where spawnbot_right TotalCount 100 MaxActive 3 SpawnCount 1 WaitBeforeStarting 12 WaitBetweenSpawns 1.2 TotalCurrency 100 Support 1 TFBot { Template T_TFBot_Medic_QuickFix } } WaveSpawn { Name "w6a" Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 30 WaitBetweenSpawns 60 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Heavyweapons_Deflector } } WaveSpawn { Name "w6a2" Where spawnbot_left Where spawnbot_right RandomSpawn 1 TotalCount 4 MaxActive 4 SpawnCount 2 WaitBeforeStarting 60 WaitBetweenSpawns 60 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_Spammer } } WaveSpawn { WaitForAllSpawned "support1" Name "support2" Where spawnbot_left Where spawnbot TotalCount 50 MaxActive 15 SpawnCount 3 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 100 Support 1 RandomChoice { TFBot { Template T_TFBot_Dragon_Fury_Pyro } TFBot { Template T_TFBot_Dragon_Fury_Pyro } TFBot { Template T_TFBot_Demoman_Knight } } } WaveSpawn { TotalCurrency 200 TotalCount 2 MaxActive 2 WaitBeforeStarting 20 WaitBetweenSpawns 60 Tank { Health 18000 Speed 75 Name "tankboss" StartingPathTrackNode "boss_path_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCurrency 200 TotalCount 2 MaxActive 2 WaitBeforeStarting 40 WaitBetweenSpawns 60 Tank { Health 18000 Speed 75 Name "tankboss" StartingPathTrackNode "boss_path2_1" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllSpawned "w6a" Where spawnbot TotalCount 10 MaxActive 2 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 15 TotalCurrency 100 Support 1 TFBot { Class Heavy Skill Expert Item "The Huo Long Heatmaker" Name "Heavy Rain" ItemAttributes { ItemName "The Huo Long Heatmaker" "override projectile type" 6 "dmg penalty vs players" 0.5 "attach particle effect" 3042 } ClassIcon pyro_flare_rain_nys Health 900 Scale 1.4 Item "The Bunsen Brave" } } WaveSpawn { WaitForAllDead "w6a" Name "w6b" Where spawnbot TotalCount 2 MaxActive 2 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Heavyweapons_Deflector } } } Wave // w7 $300 { InitWaveOutput { Target wave_start_relay Action runscriptcode Param "local particle1 = SpawnEntityFromTable(`info_particle_system`,{targetname=`particle01`,effect_name=`moon_drill_rock_debris`,origin=`755 1551 0`,start_active=1}) local particle2 = SpawnEntityFromTable(`info_particle_system`,{targetname=`particle02`,effect_name=`moon_drill_rock_debris`,origin=`2777 -1738 96`,start_active=1}) EntFire(`intel2`,`kill`) ::bombhead <- { Cleanup = function() { delete ::bombhead } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnGameEvent_player_spawn(params) { local robot = GetPlayerFromUserID(params.userid); if(robot.GetTeam() == 3) { EntFireByHandle(robot, `RunScriptCode`, `bombhead.model(self)`, 0, null, null) EntFireByHandle(robot, `RunScriptCode`, `bombhead.spawn(self)`, 0, null, null) } } model = function(robot) { if(robot.HasBotTag(`bombhead`)) { EntFireByHandle(robot, `SetCustomModelWithClassAnimations`, `models/bots/demo/bot_sentry_buster.mdl`, -1, null, null) } } spawn = function(robot) { for (local particle1; particle1 = Entities.FindByName(particle1, `particle01`); ) { if(robot.HasBotTag(`spawnA`)) { PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `mvm_wood_boards_destroy`}) robot.SetOrigin(particle1.GetOrigin()) robot.RemoveBotTag(`spawnA`) DispatchParticleEffect(`mvm_wood_boards_destroy`, robot.GetOrigin(), Vector(0, 0, 0)) PrecacheSound(`ambient/machines/thumper_dust.wav`) particle1.EmitSound(`ambient/machines/thumper_dust.wav`) } } for (local particle2; particle2 = Entities.FindByName(particle2, `particle02`); ) { if(robot.HasBotTag(`spawnB`)) { PrecacheEntityFromTable({ classname = `info_particle_system`, effect_name = `mvm_wood_boards_destroy`}) robot.SetOrigin(particle2.GetOrigin()) robot.RemoveBotTag(`spawnB`) DispatchParticleEffect(`mvm_wood_boards_destroy`, robot.GetOrigin(), Vector(1, 0, 0)) PrecacheSound(`ambient/machines/thumper_dust.wav`) particle2.EmitSound(`ambient/machines/thumper_dust.wav`) } } } }__CollectGameEventCallbacks(bombhead) " } StartWaveOutput { Target wave_start_relay Action trigger } DoneOutput { Target wave_finished_relay Action trigger } WaveSpawn { FirstSpawnOutput { Target bignet Action runscriptcode Param " ::phases <- { Cleanup = function() { delete ::phases } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnGameEvent_player_hurt(params) { local robot = GetPlayerFromUserID(params.userid); if(robot.GetTeam()==3) { local maxhp = robot.GetMaxHealth() if(robot.HasBotTag(`boss`)) { if(robot.GetHealth() <= maxhp*0.95 && robot.InCond(65)==false) { PrecacheEntityFromTable({classname=`info_particle_system`,effect_name =`cinefx_goldrush_embers`}) for (local chosen = null; (chosen = Entities.FindByClassname(chosen, `player`)) != null; ) { if(chosen.IsAlive()==false) continue; if(chosen.GetTeam()==2) continue; if(chosen.GetTeam()==3 && chosen.IsMiniBoss()==true) continue; if(chosen.GetTeam()==3 && chosen.IsMiniBoss()==false && chosen.IsAlive()==true) { printl(chosen) chosen.AddCondEx(52,7,null) chosen.AddBotTag(`boss_chosen`) NetProps.SetPropInt(chosen,`m_bIsMiniBoss`,1) chosen.AddCustomAttribute(`move speed penalty`,0.01,7) chosen.AddBotAttribute(8) chosen.SetOrigin(robot.GetCenter()) chosen.SetAbsVelocity(chosen.GetAbsVelocity()) EntFireByHandle(chosen,`runscriptcode`,`!self.SetModelScale(1.8,0)`,6.5,null,null) EntFireByHandle(robot, `RunScriptCode`, `phases.purge(self)`, 6.5, null, null) robot.Taunt(0,11) robot.AddCondEx(65,60,null) robot.AddCondEx(52,15,null) EntFire(`spawnbot*`,`disable`) EntFire(`spawnbot*`,`enable`,null,10) for (local stun = null; (stun = Entities.FindByClassname(stun, `player`)) != null; ) { if(stun.GetTeam()==3 && stun.IsMiniBoss() == false) { stun.AddCondEx(71,7,null) stun.SetOrigin(robot.GetCenter()) stun.SetAbsVelocity(stun.GetAbsVelocity()) } } } break; } } } } } purge = function(robot) { for (local purged = null; (purged = Entities.FindByClassname(purged,`player`)) != null; ) { if(purged.GetTeam()==3) { purged.TakeDamage(99999,1050624,null) purged.EmitSound(`Weapon_BackBurner.FireEnd`) if(purged.HasBotTag(`boss_chosen`)) { robot.EmitSound(`Halloween.spell_lightning_cast`) NetProps.SetPropInt(purged,`m_bUseBossHealthBar`,1) purged.AddCustomAttribute(`max health additive bonus`,20000,-1) purged.AddCustomAttribute(`move speed penalty`,0.5,-1) purged.AddCustomAttribute(`CARD: health regen`,99999,2) purged.GenerateAndWearItem(`The Crown of the Old Kingdom`) purged.RemoveBotAttribute(8) purged.SetOrigin(robot.EyePosition()) DispatchParticleEffect(`cinefx_goldrush_embers`, robot.GetCenter(), Vector(1, 0, 0)) } } } } }__CollectGameEventCallbacks(phases) " } Name "boss" Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 2 TotalCurrency 50 TFBot { Template T_TFBot_Giant_Demoknight_Shieldless Attributes MiniBoss Attributes UseBossHealthBar Health 100000 Item "The Crown of the Old Kingdom" Tag boss Scale 1.9 ItemAttributes { ItemName "Ali Baba's Wee Booties" "attach particle effect" 3083 } CharacterAttributes { "move speed bonus" 0.2 "damage bonus" 1.5 "dmg pierces resists absorbs" 1 "hand scale" 1.2 "gesture speed increase" 0.7 } } } WaveSpawn { FirstSpawnOutput { Target bignet Action runscriptcode Param "::exposeboss <- { Cleanup = function() { delete ::exposeboss } OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } function OnGameEvent_player_death(params) { local robot = GetPlayerFromUserID(params.userid); if(robot.GetTeam() == 3) { if(robot.HasBotTag(`boss_chosen`)) { for (local boss = null; (boss = Entities.FindByClassname(boss,`player`)) != null; ) { if(boss.GetTeam()==3) { if(boss.HasBotTag(`boss`)) { EntFire(`tank_start_sound`,`addoutput` `message Cart.Explode`) EntFire(`tank_start_sound`,`playsound`,null,0.01) EntFire(`tank_start_sound`,`addoutput`,`message vo/mvm/mght/demoman_mvm_m_gibberish07.mp3`,1.5) EntFire(`tank_start_sound`,`playsound`,null,1.51) boss.RemoveCond(52) boss.AddCondEx(50,10,null) boss.SetHealth(boss.GetHealth()-30000) EntFireByHandle(boss,`runscriptcode`,`!self.RemoveCond(65)`,10,null,null) } } } } } } }__CollectGameEventCallbacks(exposeboss) " } WaitForAllSpawned "boss" Where spawnbot Where spawnbot_left TotalCount 30 MaxActive 4 SpawnCount 1 WaitBeforeStarting 0.5 WaitBetweenSpawns 0 TotalCurrency 150 Support 1 TFBot { Template T_TFBot_Heavyweapons_Deflector Name "HoK Deflector Heavy" Skill Hard ClassIcon heavy_deflector_healonkill Attributes Aggressive ItemAttributes { ItemName "Deflector" "heal on kill" 500 } } } WaveSpawn { WaitForAllSpawned "boss" Where spawnbot Where spawnbot_left TotalCount 20 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 10 TotalCurrency 20 Support 1 TFBot { Template T_TFBot_Demoman_Samurai Attributes Aggressive ItemAttributes { ItemName "The Half-Zatoichi" "restore health on kill" 0 "heal on kill" 500 } } } WaveSpawn { WaitForAllSpawned "boss" Where spawnbot TotalCount 20 MaxActive 4 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 0 TotalCurrency 20 Support 1 TFBot { Template T_TFBot_Dragon_Fury_Pyro Skill Expert Attributes Aggressive Attributes AlwaysCrit } } WaveSpawn { Where spawnbot TotalCount 40 MaxActive 4 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 12 TotalCurrency 40 RandomSpawn 1 Support 1 RandomChoice { TFBot { Class Soldier WeaponRestrictions MeleeOnly ClassIcon soldier_shovel_armored_yoovy Tag spawnA Skill Expert Attributes Aggressive Health 650 Scale 1.3 Item "The Juggernaut Jacket" Name "Armored Tomb Digger" CharacterAttributes { "hand scale" 1.5 } } TFBot { Class Soldier WeaponRestrictions MeleeOnly ClassIcon soldier_shovel_armored_yoovy Tag spawnB Skill Expert Attributes Aggressive Health 650 Scale 1.3 Item "The Juggernaut Jacket" Name "Armored Tomb Digger" CharacterAttributes { "hand scale" 1.5 } } } } WaveSpawn { WaitForAllSpawned "boss" Where spawnbot TotalCount 20 MaxActive 2 SpawnCount 1 WaitBeforeStarting 10 WaitBetweenSpawns 10 TotalCurrency 20 Support 1 TFBot { Template T_TFBot_Cannon_Demo Attributes Aggressive Attributes AlwaysFireWeapon Name "Bomb Head" ItemAttributes { ItemName "The Loose Cannon" "fire rate bonus" 0.1 "projectile spread angle penalty" 180 "projectile range increased" 0.5 "grenade damage reduction on world contact" 7 "fuse bonus" 1.75 "auto fires full clip" 1 "auto fires when full" 1 //"use large smoke explosion" 1 } Scale 1.5 Health 650 Attributes AlwaysCrit ClassIcon sentry_buster2 Tag bombhead } } } }