// spawnbots: ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // spawnbot - spawn bots in carrier // spawnbot_mission_sentrybuster - main carrier // spawnbot_mission_spy - main carrier // spawnbot_mission_engineer - side thing // spawnbot_mission_sniper - one spawn near carrier and another on side thing. // spawnbot_side - spawns bots in side thing // spawnbot_alt - spawn bots on main spawn, closer to the drop. mostly a relic from alpha which is still used for some reason. // spawnbot_airdrop0 // spawnbot_airdrop1 // spawnbot_airdrop2 // spawnbot_invasion - uses every available land spawn // infinite limited spawns - controlled by relays // spawnbot_alt_limited_a // spawnbot_alt_limited_b // spawnbot_alt_limited_c // spawnbot_alt_limited_d // spawnbot_side_limited_a // spawnbot_side_limited_b // spawnbot_side_limited_c // spawnbot_side_limited_d // spawnbot_airdrop0_limited_a // spawnbot_airdrop0_limited_b // spawnbot_airdrop0_limited_c // spawnbot_airdrop0_limited_d // spawnbot_airdrop1_limited_a // spawnbot_airdrop1_limited_b // spawnbot_airdrop1_limited_c // spawnbot_airdrop1_limited_d // spawnbot_airdrop2_limited_a // spawnbot_airdrop2_limited_b // spawnbot_airdrop2_limited_c // spawnbot_airdrop2_limited_d /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // relays: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // wave_start_relay; // wave_finished_relay; // boss_deploy_relay; // air_warning_relay - notify players of the Airdrop feature. // air_warning_notxt_relay - just play the air siren // drop_bomb0_relay - Call this relay with StartWaveOutput for tank_air_bomb_start, use WaitBeforeStarting as the ones used in the mission (those relays spawn a plane, mostly an aesthetic thing, // buuuut it would be kind of not pretty if tanks would just pop outta thin air, m?) // drop_bomb0_relay - Call this relay with StartWaveOutput for tank_air_bomb1_start / tank_path_drop0_b / tank_path_drop0_a, use WaitBeforeStarting as the ones used in the mission. (If you wanna drop bomb and bomb1 in 1 drop, then call the relay for the only for one tank. Eh, that was a bad explanation. Just go check out the mission.) // drop_bomb1_relay - Call this relay with StartWaveOutput for tank_air_bomb2_start / tank_path_drop1, use WaitBeforeStarting as the ones used in the mission (call in with the tanks that use tank_air_bomb_start and like for more dem immersion.) // droptank1_killed_relay - use this with tanks spawned from tank_path_drop1, that's kind of essential so map won't screw up. // droptank0_killed_relay - use this on OnKilledOutput with tanks spawned from tank_path_drop0_a / from tank_path_drop0_b, that's kind of essential so map won't screw up. // dropbomb_coords_stop_relay - spawn the random tank bomb drop, only 1 can exist at a time (it gets removed after 5 seconds since tank_path_air_bombrandom gets a tank spawned) // randomdrop10s_start_relay randomdrop10s_stop_relay - calls dropbomb_coords_stop_relay each 7 seconds. (initial spawn takes 7 seconds as well, after spawning path for tank to spawn on it stops counting until tank spawns on the path.) (don't ask why it got 10s in the name) // ^ automatically stops with wave_finished_relay. If it spawned path, it will persist 'til next tank spawns. // 30s_bomb_relay 45s_bomb_relay usual_bomb_relay - enable timed bombs or the usual non returning one (bomb without timer (usual) is enabled by default) // stunbots_on_relay stunbots_off_relay - stuns all bots on the map except sentry busters (stun lasts 'til turned off through stunbots_off_relay). wave_finished_relay disables it by default. // break_start_relay - Shows "break" message, opens up forward upgrade station, resets bomb and pauses bot spawning. also uses stunbots_on_relay // break_end_relay - Shows "10 seconds" message, after 10 seconds pass "break end" message shows and bot spawning is resumed. also uses stunbots_off_relay // bot_attributes_default_relay - sets current bots' attributes to Default // bot_attributes_1_relay - sets current bots' attributes to BotAttributes1 // bot_attributes_2_relay - sets current bots' attributes to BotAttributes2 // bot_attributes_3_relay - sets current bots' attributes to BotAttributes3 // bot_attributes_4_relay - sets current bots' attributes to BotAttributes4 // bot_attributes_revertdefault_relay - set current and future bots' to Default. // bot_attributes_setdefault1_relay - set current and future bots' to BotAttributes1. // bot_attributes_setdefault2_relay - set current and future bots' to BotAttributes2. // bot_attributes_setdefault3_relay - set current and future bots' to BotAttributes3. // bot_attributes_setdefault4_relay - set current and future bots' to BotAttributes4. // bot_attributes_random_relay - selects random bot attribute relay (Including default one) // bot_attributes_random10_relay - selects random bot attribute every 5 - 8 seconds // bot_attributes_random10_disable_relay - disables bot_attributes_random10_relay* // bot_setdefault_attributes_random_relay - Sets random attribute to current and future bots (Sets default attribute). // bot_setdefault_attributes_random10_relay - sets random bot attribute as default and switches every alive bot to it every 5 - 8 seconds // bot_setdefault_attributes_random10_disable_relay - disables bot_setdefault_attributes_random10_relay // drop_bomb0_l10_relay drop_bomb0_l20_relay drop_bomb0_l30_relay - repeats plane spawn each 10/20/30 seconds*. // drop_bomb0_lstop_relay - stops repeating. // drop_bomb1_l10_relay drop_bomb1_l20_relay drop_bomb1_l30_relay - repeats plane spawn each 10/20/30 seconds*. // drop_bomb1_lstop_relay - stops repeating. // limited_spawns_enable_relay - turn on all spawns for "infinite" support bots. // limited_spawns_disable_a_relay - disable a spawns // limited_spawns_disable_b_relay - disable b spawns // limited_spawns_disable_c_relay - disable c spawns // limited_spawns_disable_d_relay - disable d spawns // * Planes stop looping spawns after wave_finished_relay is fired as well. And it also stops timers for bot_attributes_random10_relay / bot_setdefault_attributes_random10_relay. Also sets Default as the default bot attribute. // Also enables all "infinite limited" spawns back on. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // tags: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // nav_prefer_flank_middle // nav_prefer_flank_left // nav_right // nav_flank_routeother (will take the currently "not active" main route.) // avoid tags // nav_spawn_left // nav_spawn_right // misc tags: // attrbot - use this with bots that use bot_setdefault_attributes_random10_relay / bot_attributes_random10_relay just so they won't cancel out of bomb drop animation at the hatch due to constant attribute changes. // bot_sentrybuster - should be tag for sentrybusters. makes bot immune to stunbots_on_relay // spawnbot_special tags // the crutchy ones: requires to have bots with such tag spawned separately, at least with waitbetweenspawns 0.3 . can't be applied to giants for some reason. // bot_random - assigns random class sign to bot. // setcustommodel way. changes bots' hitboxes to that of a model, so small props + small size smells of a disaster. // bot_moo - assigns cow cutout to bot // bot_frog - assigns frog model to bot // bot_gift - assigns tf_gift model to bot // bot_error - assigns the famous ERROR model. bet players will report this as a bug on map report thread. oh well, who cares! // bot_cardboard - replaces model with cardboard cutout. needs class specific tag to work. // bot_not - replaces model with the ref posing human model. needs class specific tag to work. // class tags (without bot_not or bot_cardboard replaces with the ref posing bot model (except when the model is the same class as the bot, then it just makes a bot that slides along the ground without run animation while holding weapons properly)): // Scout // Soldier // Pyro // Demoman // Heavyweapons || Heavy // Engineer // Sniper // Medic // Spy // options for some models. should be possible to apply to default bots, mixed and matched and stuff. // red - if possible, uses the red skin of the model. Only works with bot_random // bot_drunk - applies end of round stun to bot. //please tag giant bots with "giant" tag so they'll pay attention to some nav_avoids so they won't get stuck in some places. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // bot attributes: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Default // BotAttributes1 // BotAttributes2 // BotAttributes3 // BotAttributes4 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // tanks: ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // suggested tank name: "tank" - otherwise they won't blow up on bomb deployment. ("droptank0" for tank_path_drop0_a / tank_path_drop0_b and "droptank1" for tank_path_drop1) // other tank names: "tankbomb" for tanks that drop down and explode. tanks that spawn with tank_path_air_bombrandom without such name will just drop down and idle. // vac tanks: "tank_blast" (blast resistance) "tank_fire" (fire resistance) "tank_bullet" (bullet resistance) - only 1 vac tank of given type can exist. (so like, can't have 2 bullet vacs. but you can have all 3 different things out at once.) // tank pathes: tank_path_a; tank_path_b; // tank_path_air_bomb; tank_path_air_bomb1; tank_path_air_bomb2 - tank drops down from the sky, when landing causes 500k damage around it and to itself, then stops. // Yup, so I guess it's best to have health of those tanks below 250k so they won't just idle on the map without reason. // tank_path_air_bombrandom - must be used AFTER dropbomb_coords_stop_relay or else game might crash because those thing don't exist unless spawned by their respective relay. // tank_path_drop0_a; tank_path_drop0_b; - spawns parachuting tanks that go down on ground, land after ~18 seconds and go on a/b path for usual tanks. // tank_path_drop1; - spawns parachuting tank close to hatch, that lands in ~16 seconds and proceeds to go towards the hatch. // It's best to have only 1 tank parachuting at the same time on drop0 or drop1. For reference, check the mission. // tank_path_bullet_start_a tank_path_fire_start_a tank_path_blast_start_a - tank path a but used for vac tank spawns. please spawn tanks with names that match the path // tank_path_bullet_start_b tank_path_fire_start_b tank_path_blast_start_b - tank path b but used for vac tank spawns. please spawn tanks with names that match the path // there's also 5 nests for engineer bots with sentry and teleporter hints. #base robot_giant.pop #base robot_standard.pop WaveSchedule { StartingCurrency 400 RespawnWaveTime 5 FixedRespawnWaveTime Yes CanBotsAttackWhileInSpawnRoom No AddSentryBusterWhenDamageDealtExceeds 0 AddSentryBusterWhenKillCountExceeds 0 Templates { } Mission //busters { Objective DestroySentries Where spawnbot_mission_sentrybuster CooldownTime 40 DesiredCount 1 BeginAtWave 1 RunForThisManyWaves 1 TFBot { Template T_TFBot_SentryBuster Tag bot_sentrybuster } } Mission //busters last wave { Objective DestroySentries Where spawnbot_airdrop0 Where spawnbot_airdrop1 RandomSpawn 1 CooldownTime 5 DesiredCount 1 BeginAtWave 2 RunForThisManyWaves 12 TFBot { Template T_TFBot_SentryBuster Tag giant Tag bot_sentrybuster Item "The B.A.S.E. Jumper" Name "Air Buster" } } Mission { Objective Engineer Where spawnbot_mission_engineer CooldownTime 5 DesiredCount 5 BeginAtWave 6 RunForThisManyWaves 1 TFBot { Template T_TFBot_Engineer_Sentry_Teleporter } } Mission { Objective Spy Where spawnbot_mission_spy CooldownTime 0 DesiredCount 1 BeginAtWave 9 RunForThisManyWaves 1 TFBot { Class Spy WeaponRestrictions PrimaryOnly } } Wave //1st. { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name c Where spawnbot TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly BehaviorModifiers Push Tag nav_prefer_flank_middle Tag nav_spawn_right } } WaveSpawn { Name c Where spawnbot TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly BehaviorModifiers Push Tag nav_spawn_left } } WaveSpawn { Name c Where spawnbot TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly BehaviorModifiers Push Tag nav_prefer_flank_left } } WaveSpawn { Name c Where spawnbot WaitBeforeStarting 10 TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly BehaviorModifiers Push Tag nav_right } } WaveSpawn { Name c Where spawnbot WaitBeforeStarting 10 TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly BehaviorModifiers Push Tag nav_flank_routeother } } WaveSpawn { Name c Where spawnbot WaitBeforeStarting 10 TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly BehaviorModifiers Push } } WaveSpawn { Name c Where spawnbot TotalCount 2 SpawnCount 1 MaxActive 1 TotalCurrency 100 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly } } WaveSpawn { WaitForAllDead c Name a Where spawnbot_alt TotalCount 2 SpawnCount 1 MaxActive 1 TotalCurrency 0 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly } } WaveSpawn { WaitForAllDead a Name b Where spawnbot_side TotalCount 2 SpawnCount 1 MaxActive 1 TotalCurrency 0 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name a TotalCount 1 TotalCurrency 0 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_a" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead a Name b TotalCount 1 TotalCurrency 0 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_b" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead b Name c TotalCount 1 TotalCurrency 0 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_a" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead b Name c TotalCount 1 TotalCurrency 0 WaitBeforeStarting 7 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_b" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead c TotalCount 1 TotalCurrency 0 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_b" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead c TotalCount 1 TotalCurrency 0 WaitBeforeStarting 7 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_a" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } Name a TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb" } } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } WaitForAllDead a Name b TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4.1 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb1" } } WaveSpawn { StartWaveOutput { Target drop_bomb1_relay Action Trigger } WaitForAllDead b TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb" } } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } WaitForAllDead b TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb1" } } WaveSpawn { WaitForAllDead b TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4.1 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb2" } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name a Where spawnbot_airdrop0 TotalCount 10 SpawnCount 5 MaxActive 5 TotalCurrency 0 TFBot { Class Scout Skill Expert WeaponRestrictions SecondaryOnly Item "The B.A.S.E. Jumper" } } WaveSpawn { Name a Where spawnbot_airdrop0 TotalCount 2 SpawnCount 1 MaxActive 1 TotalCurrency 0 TFBot { Class Scout Skill Expert WeaponRestrictions SecondaryOnly Tag giant Attributes MiniBoss ClassIcon scout_giant Item "The B.A.S.E. Jumper" } } WaveSpawn { Name b WaitForAllDead a Where spawnbot_airdrop1 TotalCount 5 SpawnCount 5 MaxActive 5 TotalCurrency 0 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly Item "The B.A.S.E. Jumper" } } WaveSpawn { Name b WaitForAllDead a Where spawnbot_airdrop1 TotalCount 1 SpawnCount 1 MaxActive 1 TotalCurrency 0 TFBot { Class Scout Skill Easy Tag giant Attributes MiniBoss ClassIcon scout_giant WeaponRestrictions MeleeOnly Item "The B.A.S.E. Jumper" } } WaveSpawn { Name c WaitForAllDead b Where spawnbot_airdrop1 TotalCount 5 SpawnCount 5 MaxActive 5 TotalCurrency 0 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly Item "The B.A.S.E. Jumper" } } WaveSpawn { Name c WaitForAllDead b Where spawnbot_airdrop0 TotalCount 5 SpawnCount 5 MaxActive 5 TotalCurrency 0 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly Item "The B.A.S.E. Jumper" } } WaveSpawn { WaitForAllDead c Where spawnbot_airdrop2 TotalCount 5 SpawnCount 5 MaxActive 5 TotalCurrency 0 TFBot { Class Scout Skill Easy Tag giant Attributes MiniBoss ClassIcon scout_giant WeaponRestrictions MeleeOnly Item "The B.A.S.E. Jumper" } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { StartWaveOutput { Target air_warning_relay Action Trigger } Where spawnbot TotalCount 2 SpawnCount 1 MaxActive 1 TotalCurrency 0 TFBot { Class Scout Skill Easy WeaponRestrictions MeleeOnly } } WaveSpawn { StartWaveOutput { Target drop_bomb0_l10_relay Action Trigger } Support 1 TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4.1 WaitBetweenSpawns 10 Tank { Health 100 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb1" } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { StartWaveOutput { Target air_warning_notxt_relay Action Trigger } Where spawnbot TotalCount 100 WaitBetweenSpawns 5 SpawnCount 1 MaxActive 1 TotalCurrency 0 TFBot { Class Heavy Scale 1.75 Skill Easy WeaponRestrictions MeleeOnly } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { StartWaveOutput { Target drop_bomb1_relay Action Trigger } Name a1 TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 100 Name "droptank1" Speed 75 StartingPathTrackNode "tank_path_drop1"//takes 16 seconds to land OnKilledOutput { Target droptank1_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCount 0 TotalCurrency 0 WaitBeforeStarting 16 Name a2 WaitForAllSpawned a1 } WaveSpawn { StartWaveOutput { Target drop_bomb1_relay Action Trigger } WaitForAllSpawned a2 Name a TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 100 Name "droptank1" Speed 75 StartingPathTrackNode "tank_path_drop1" OnKilledOutput { Target droptank1_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } WaitForAllDead a TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4 Tank { Health 100 Name "droptank0" Speed 75 StartingPathTrackNode "tank_path_drop0_a" // takes ~18 seconds to land OnKilledOutput { Target droptank0_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCount 0 TotalCurrency 0 WaitBeforeStarting 18 Name b WaitForAllDead a } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } WaitForAllSpawned b TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4 Tank { Health 100 Name "droptank0" Speed 75 StartingPathTrackNode "tank_path_drop0_b" // takes ~18 seconds to land OnKilledOutput { Target droptank0_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { TotalCount 0 TotalCurrency 0 WaitBeforeStarting 18 Name c WaitForAllSpawned b } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } Name d WaitForAllSpawned c TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4 Tank { Health 100 Name "droptank0" Speed 75 StartingPathTrackNode "tank_path_drop0_b" // takes ~18 seconds to land OnKilledOutput { Target droptank0_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { StartWaveOutput { Target drop_bomb0_relay Action Trigger } WaitForAllDead d TotalCount 1 TotalCurrency 0 WaitBeforeStarting 4 Tank { Health 100 Name "droptank0" Speed 75 StartingPathTrackNode "tank_path_drop0_b" // takes ~18 seconds to land OnKilledOutput { Target droptank0_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { StartWaveOutput { Target drop_bomb1_relay Action Trigger } WaitForAllDead d TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 100 Name "droptank1" Speed 75 StartingPathTrackNode "tank_path_drop1" OnKilledOutput { Target droptank1_killed_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name a TotalCount 0 TotalCurrency 0 WaitBeforeStarting 15 FirstSpawnOutput { Target bot_attributes_1_relay Action Trigger } } WaveSpawn { Name b WaitForAllSpawned a TotalCount 0 TotalCurrency 0 WaitBeforeStarting 15 FirstSpawnOutput { Target bot_attributes_2_relay Action Trigger } } WaveSpawn { Name c WaitForAllSpawned b TotalCount 0 TotalCurrency 0 WaitBeforeStarting 15 FirstSpawnOutput { Target bot_attributes_3_relay Action Trigger } } WaveSpawn { Name d WaitForAllSpawned c TotalCount 0 TotalCurrency 0 WaitBeforeStarting 15 FirstSpawnOutput { Target bot_attributes_default_relay Action Trigger } } WaveSpawn { WaitForAllSpawned d TotalCount 0 TotalCurrency 0 WaitBeforeStarting 15 FirstSpawnOutput { Target bot_attributes_random10_relay Action Trigger } } WaveSpawn { Where spawnbot TotalCount 1 TotalCurrency 0 TFBot { Class Soldier Name "Attributes test" EventChangeAttributes { Default { Item "The Cow Mangler 5000" Item "The Concheror" Item "The Half-Zatoichi" Tag attrbot Skill Expert WeaponRestrictions SecondaryOnly Attributes SpawnWithFullCharge CharacterAttributes { "move speed bonus" 1 "increased jump height" 0 "increase buff duration" 9000 } } BotAttributes1 { Item "The Cow Mangler 5000" Item "The Concheror" Item "The Half-Zatoichi" Tag attrbot Skill Expert WeaponRestrictions SecondaryOnly Tag attrbot Attributes SpawnWithFullCharge CharacterAttributes { "move speed bonus" 0.5 "increased jump height" 0 "increase buff duration" 9000 } } BotAttributes2 { Item "The Cow Mangler 5000" Item "The Concheror" Item "The Half-Zatoichi" Tag attrbot Skill Expert Attributes HoldFireUntilFullReload Attributes AlwaysFireWeapon WeaponRestrictions PrimaryOnly Attributes SpawnWithFullCharge ItemAttributes { ItemName "The Cow Mangler 5000" "fire rate bonus" 2.50 "faster reload rate" -1 "damage bonus" 2.0 "hand scale" 1.5 "Set DamageType Ignite" 1 } CharacterAttributes { "move speed bonus" 0.0001 "increased jump height" 0.0000001 "increase buff duration" 9000 } } BotAttributes3 { Item "The Cow Mangler 5000" Item "The Concheror" Item "The Half-Zatoichi" Tag attrbot Skill Expert WeaponRestrictions MeleeOnly Attributes SpawnWithFullCharge ItemAttributes { ItemName "The Half-Zatoichi" "fire rate penalty" 2.0 "fire rate bonus with reduced health" 0.3 "dmg penalty while half alive" 0.5 "dmg bonus while half dead" 3.0 "honorbound" 0 "restore health on kill" 0 "heal on kill" 2500 "speed_boost_on_kill" 1 "critboost on kill" 5 "killstreak tier" 1 } CharacterAttributes { "move speed bonus" 2 "increase buff duration" 9000 } } } } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name a Where spawnbot TotalCount 1 TotalCurrency 0 DoneOutput { Target break_start_relay Action Trigger } TFBot { Class Scout WeaponRestrictions MeleeOnly } } WaveSpawn { Name a1 WaitForAllDead a TotalCount 0 TotalCurrency 0 WaitBeforeStarting 15 FirstSpawnOutput { Target break_end_relay Action Trigger } } WaveSpawn { WaitForAllSpawned a1 Where spawnbot TotalCount 1 TotalCurrency 0 TFBot { Class Scout WeaponRestrictions MeleeOnly } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { TotalCount 1 TotalCurrency 0 Tank { StartingPathTrackNode tank_path_a Name "tank" Health 20000 Speed 70 } } WaveSpawn { WaitBeforeStarting 23 Name surprise Where nowhere } WaveSpawn { WaitForAllSpawned surprise StartWaveOutput { Target drop_bomb0_relay Action Trigger } Name a TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 300 Name "tank" Speed 75 StartingPathTrackNode "tank_path_air_bomb" } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { StartWaveOutput { Target air_warning_notxt_relay Action Trigger } } WaveSpawn { Name time_is_precious StartWaveOutput { Target dropbomb_coords_stop_relay Action Trigger } WaitBeforeStarting 5 } WaveSpawn { WaitForAllSpawned time_is_precious StartWaveOutput { Target drop_bomb0_relay Action Trigger } Name a TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 300 Name "tankbomb" Speed 75 StartingPathTrackNode "tank_path_air_bombrandom" } } WaveSpawn { WaitForAllSpawned a Name aa WaitBeforeStarting 5 } WaveSpawn { WaitForAllSpawned aa Name time_is_precious_ep2 StartWaveOutput { Target dropbomb_coords_stop_relay Action Trigger } WaitBeforeStarting 5 } WaveSpawn { WaitForAllSpawned time_is_precious_ep2 StartWaveOutput { Target drop_bomb0_relay Action Trigger } Name b TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 300 Name "tankbomb" Speed 75 StartingPathTrackNode "tank_path_air_bombrandom" } } WaveSpawn { WaitForAllSpawned b Name bb WaitBeforeStarting 5 } WaveSpawn { WaitForAllSpawned bb Name time_is_precious_ep2_pt2 StartWaveOutput { Target dropbomb_coords_stop_relay Action Trigger } WaitBeforeStarting 5 } WaveSpawn { WaitForAllSpawned time_is_precious_ep2_pt2 StartWaveOutput { Target drop_bomb0_relay Action Trigger } Name c TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 Tank { Health 300 Name "tankbomb" Speed 75 StartingPathTrackNode "tank_path_air_bombrandom" } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot WaitBetweenSpawns 5 TotalCount 10 SpawnCount 1 MaxActive 10 TotalCurrency 100 TFBot { Class Scout WeaponRestrictions MeleeOnly } } WaveSpawn { Name time_is_precious StartWaveOutput { Target randomdrop10s_start_relay Action Trigger } WaitBeforeStarting 10 } WaveSpawn { WaitForAllSpawned time_is_precious StartWaveOutput { Target drop_bomb0_l10_relay Action Trigger } Name a Support 1 TotalCount 1 TotalCurrency 0 WaitBeforeStarting 3.9 WaitBetweenSpawns 10 Tank { Health 300 Name "tankbomb" Speed 75 StartingPathTrackNode "tank_path_air_bombrandom" } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name a TotalCount 1 TotalCurrency 100 Tank { Health 500 Name "tank_bullet" Speed 75 StartingPathTrackNode "tank_path_bullet_start_a" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name a TotalCount 1 TotalCurrency 100 WaitBeforeStarting 4 Tank { Health 500 Name "tank_blast" Speed 75 StartingPathTrackNode "tank_path_blast_start_a" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Name a TotalCount 1 TotalCurrency 100 WaitBeforeStarting 8 Tank { Health 500 Name "tank_fire" Speed 75 StartingPathTrackNode "tank_path_fire_start_a" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead a TotalCount 1 TotalCurrency 100 Tank { Health 500 Name "tank_bullet" Speed 75 StartingPathTrackNode "tank_path_bullet_start_b" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead a TotalCount 1 TotalCurrency 100 WaitBeforeStarting 4 Tank { Health 500 Name "tank_blast" Speed 75 StartingPathTrackNode "tank_path_blast_start_b" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { WaitForAllDead a TotalCount 1 TotalCurrency 100 WaitBeforeStarting 8 Tank { Health 500 Name "tank_fire" Speed 75 StartingPathTrackNode "tank_path_fire_start_b" OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } } Wave // { InitWaveOutput { Target 30s_bomb_relay Action Trigger } StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name a Where spawnbot WaitBetweenSpawns 6 TotalCount 10 SpawnCount 2 MaxActive 10 TotalCurrency 100 TFBot { Class Scout WeaponRestrictions MeleeOnly } } WaveSpawn { StartWaveOutput { Target 45s_bomb_relay Action Trigger } WaitForAllDead a Name b Where spawnbot WaitBeforeStarting 3 WaitBetweenSpawns 6 TotalCount 10 SpawnCount 2 MaxActive 10 TotalCurrency 100 TFBot { Class Scout WeaponRestrictions MeleeOnly } } WaveSpawn { StartWaveOutput { Target usual_bomb_relay Action Trigger } WaitForAllDead b Where spawnbot WaitBeforeStarting 3 WaitBetweenSpawns 6 TotalCount 10 SpawnCount 2 MaxActive 10 TotalCurrency 100 TFBot { Class Scout WeaponRestrictions MeleeOnly } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot TotalCount 88 WaitBetweenSpawns 0.3 SpawnCount 1 MaxActive 22 TotalCurrency 50 RandomChoice { TFBot { Name "Blue Random" Class Scout Tag bot_random } TFBot { Name "Red Random" Class Scout Tag bot_random Tag red } TFBot { Name "Blue Random" Class Soldier Tag bot_random } TFBot { Name "Red Random" Class Soldier Tag bot_random Tag red } TFBot { Name "Blue Random" Class Pyro Tag bot_random } TFBot { Name "Red Random" Class Pyro Tag bot_random Tag red } TFBot { Name "Blue Random" Class Demoman Tag bot_random } TFBot { Name "Red Random" Class Demoman Tag bot_random Tag red } TFBot { Name "Blue Random" Class Heavy Tag bot_random } TFBot { Name "Red Random" Class Heavy Tag bot_random Tag red } TFBot { Name "Blue Random" Class Medic Tag bot_random } TFBot { Name "Red Random" Class Medic Tag bot_random Tag red } } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name moo Where spawnbot TotalCount 22 SpawnCount 22 MaxActive 22 TotalCurrency 100 RandomChoice { TFBot { Class Scout Tag bot_frog Name Jumper Attributes AutoJump AutoJumpMin 1 AutoJumpMax 3 WeaponRestrictions MeleeOnly } TFBot { Class Scout Tag bot_moo Name MooMoo } } } WaveSpawn { WaitForAllDead moo Name boo Where spawnbot TotalCount 22 SpawnCount 22 MaxActive 22 TotalCurrency 100 RandomChoice { TFBot { Class Scout Tag bot_gift Name "Merry Christmass" Attributes AutoJump AutoJumpMin 1 AutoJumpMax 3 WeaponRestrictions MeleeOnly } TFBot { Class Scout Tag bot_error Name Error } TFBot { Class Scout Tag Scout Tag bot_not Name "Funny Scout" } TFBot { Class Scout Tag bot_cardboard Tag Scout Name "Cardboard Crusader" } } } WaveSpawn { WaitForAllDead boo Where spawnbot TotalCount 22 SpawnCount 22 MaxActive 22 TotalCurrency 100 TFBot { Class Scout Tag bot_drunk Name "I Give Up!" } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name moo Where spawnbot TotalCount 22 SpawnCount 22 MaxActive 22 TotalCurrency 100 RandomChoice { TFBot { Class Scout Tag bot_not Tag Heavy Name Heavy Attributes AutoJump AutoJumpMin 1 AutoJumpMax 3 WeaponRestrictions MeleeOnly } TFBot { Class Scout Tag bot_not Tag Heavyweapons Name Heavyweapons } TFBot { Class Scout Tag Scout Tag bot_not } TFBot { Class Scout Tag bot_not Name Soldier Tag Soldier } TFBot { Class Scout Tag bot_not Tag Pyro Name Pyro } TFBot { Class Scout Tag bot_not Tag Demoman Name Demoman } TFBot { Class Scout Tag bot_not Tag Engineer Name Engineer } TFBot { Class Scout Tag bot_not Tag Sniper Name Sniper } TFBot { Class Scout Tag bot_not Tag Medic Name Medic } TFBot { Class Scout Tag bot_not Tag Spy Name Spy } } } WaveSpawn { WaitForAllDead moo Name boo Where spawnbot TotalCount 22 SpawnCount 22 MaxActive 22 TotalCurrency 100 RandomChoice { TFBot { Class Scout Tag bot_cardboard Tag Heavy Name Heavy Attributes AutoJump AutoJumpMin 1 AutoJumpMax 3 WeaponRestrictions MeleeOnly } TFBot { Class Scout Tag bot_cardboard Tag Heavyweapons Name Heavyweapons } TFBot { Class Scout Tag Scout Tag bot_cardboard } TFBot { Class Scout Tag bot_cardboard Name Soldier Tag Soldier } TFBot { Class Scout Tag bot_cardboard Tag Pyro Name Pyro } TFBot { Class Scout Tag bot_cardboard Tag Demoman Name Demoman } TFBot { Class Scout Tag bot_cardboard Tag Engineer Name Engineer } TFBot { Class Scout Tag bot_cardboard Tag Sniper Name Sniper } TFBot { Class Scout Tag bot_cardboard Tag Medic Name Medic } TFBot { Class Scout Tag bot_cardboard Tag Spy Name Spy } } } WaveSpawn { WaitForAllDead boo Where spawnbot TotalCount 22 SpawnCount 22 MaxActive 22 TotalCurrency 100 RandomChoice { TFBot { Class Scout Tag Heavy Name Heavy Attributes AutoJump AutoJumpMin 1 AutoJumpMax 3 WeaponRestrictions MeleeOnly } TFBot { Class Scout Tag Heavyweapons Name Heavyweapons } TFBot { Class Scout Tag Scout } TFBot { Class Scout Name Soldier Tag Soldier } TFBot { Class Scout Tag Pyro Name Pyro } TFBot { Class Scout Tag Demoman Name Demoman } TFBot { Class Scout Tag Engineer Name Engineer } TFBot { Class Scout Tag Sniper Name Sniper } TFBot { Class Scout Tag Medic Name Medic } TFBot { Class Scout Tag Spy Name Spy } } } } Wave // { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot TotalCount 66 SpawnCount 22 MaxActive 22 TotalCurrency 100 TFBot { Template T_TFBot_Giant_Soldier_Spammer } } } }