#base robot_giant.pop #base robot_standard.pop #base robot_gatebot.pop population { StartingCurrency 250 RespawnWaveTime 6 CanBotsAttackWhileInSpawnRoom no ImprovedAirblast 1 extendedupgradesonly 1 FlagCarrierMovementPenalty 0.75 ForceRedMoney 1 ExtraSpawnPoint //Adds spawn points on specified location { Name "assistspawn1" StartDisabled 1 // If the spawn point starts disabled (Default: 0) TeamNum 3 // 2 - Red team 3 - Robots. If you are adding spawn for reprogrammed robots, use team 3 X "4512" Y "-4512" Z "204" } ExtraSpawnPoint //Adds spawn points on specified location { Name "assistspawn2" StartDisabled 1 // If the spawn point starts disabled (Default: 0) TeamNum 3 // 2 - Red team 3 - Robots. If you are adding spawn for reprogrammed robots, use team 3 X "4512" Y "-4512" Z "204" } ExtraSpawnPoint //Adds spawn points on specified location { Name "assistspawn3" StartDisabled 1 // If the spawn point starts disabled (Default: 0) TeamNum 3 // 2 - Red team 3 - Robots. If you are adding spawn for reprogrammed robots, use team 3 X "4512" Y "-4512" Z "204" } PointTemplates { buyableally1 { NoFixup 1 logic_relay { "targetname" "Ally1Relay" "OnTrigger" "assistspawn1,Enable,,0,-1" } logic_relay { "targetname" "Ally1DisableRelay" "OnTrigger" "assistspawn1,Disable,,0,-1" } } buyableally2 { NoFixup 1 logic_relay { "targetname" "Ally2Relay" "OnTrigger" "assistspawn2,Enable,,0,-1" } logic_relay { "targetname" "Ally2DisableRelay" "OnTrigger" "assistspawn2,Disable,,0,-1" } } buyableally3 { NoFixup 1 logic_relay { "targetname" "Ally3Relay" "OnTrigger" "assistspawn3,Enable,,0,-1" } logic_relay { "targetname" "Ally3DisableRelay" "OnTrigger" "assistspawn3,Disable,,0,-1" } } } SpawnTemplate buyableally1 SpawnTemplate buyableally2 SpawnTemplate buyableally3 ExtendedUpgrades { engiepene { Name "+1 target penetration" // Name of the upgrade displayed on the menu Attribute "projectile penetration" // The attribute name Cap 1 // Maximum amount of the attribute Increment 1 // Attribute increment value per level Cost 300 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "Secondary" } } engiefiring { Name "+10% firing speed" // Name of the upgrade displayed on the menu Attribute "fire rate bonus" // The attribute name Cap 0.1 // Maximum amount of the attribute Increment -0.1 // Attribute increment value per level Cost 150 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "Secondary" } } wrenchfiring { Name "+5% firing speed" // Name of the upgrade displayed on the menu Attribute "fire rate bonus" // The attribute name Cap 0.05 // Maximum amount of the attribute Increment -0.05 // Attribute increment value per level Cost 50 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "Melee" } } engiefiringsentry { Name "+20% sentry firing speed" // Name of the upgrade displayed on the menu Attribute "engy sentry fire rate increased" // The attribute name Cap 0.2 // Maximum amount of the attribute Increment -0.2 // Attribute increment value per level Cost 325 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "PDA" } } engiebonussentry { Name "+1 disposable sentry" // Name of the upgrade displayed on the menu Attribute "engy disposable sentries" // The attribute name Cap 9 // Maximum amount of the attribute Increment 1 // Attribute increment value per level Cost 350 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "PDA" } } engie2way { Name "2-way teleporters" // Name of the upgrade displayed on the menu Attribute "bidirectional teleport" // The attribute name Cap 1 // Maximum amount of the attribute Increment 1 // Attribute increment value per level Cost 125 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "PDA" } } engiemetalcap { Name "+25% metal capacity" // Name of the upgrade displayed on the menu Attribute "maxammo metal increased" // The attribute name Cap 10 // Maximum amount of the attribute Increment 0.25 // Attribute increment value per level Cost 100 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "PDA" } } engiedisprange { Name "+300% dispenser range" // Name of the upgrade displayed on the menu Attribute "engy dispenser radius increased" // The attribute name Cap 4 // Maximum amount of the attribute Increment 3 // Attribute increment value per level Cost 125 // Cost of the upgrade per level AllowPlayerClass Engineer AllowedWeapons { Slot "PDA" } } crit_can { Name "Crit canteen" Attribute "critboost" Cap 3 Increment 1 Cost 100 UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } } build_can { Name "Instant Build" Attribute "building instant upgrade" Cap 3 Increment 1 Cost 50 UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } } fill_can { Name "Ammo refill" Attribute "refill_ammo" Cap 3 Increment 1 Cost 25 UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } } AllyUpgrade1 { Name "Purchase a Bat Scout" Attribute "heal rate penalty" Cap 0.999 Increment -0.001 Cost 75 Description "Purchase a bot to assist you in defending!" // Additional description line AllowPlayerClass Engineer PlayerUpgrade 1 OnUpgrade { } OnApply // If parameter is empty, the upgrade level is passed instead as parameter { Output "!activator,$displaytextchat,You have purchased a robot!,0" Output "Ally1Relay,Trigger,,0,-1" } OnDowngrade //If parameter is empty, the upgrade level is passed instead as parameter { Output "Ally1DisableRelay,Trigger,,0,-1" Output "!activator,$displaytextchat,You have refunded a robot!,0" } } AllyUpgrade2 { Name "Purchase a Demoman" Attribute "heal rate bonus" Cap 0.999 Increment -0.001 Cost 375 Description "Purchase a bot to assist you in defending!" // Additional description line AllowPlayerClass Engineer PlayerUpgrade 1 OnApply // If parameter is empty, the upgrade level is passed instead as parameter { Output "!activator,$displaytextchat,You have purchased a robot!,0" Output "Ally2Relay,Trigger,,0,-1" } OnDowngrade //If parameter is empty, the upgrade level is passed instead as parameter { Output "Ally2DisableRelay,Trigger,,0,-1" Output "!activator,$displaytextchat,You have refunded a robot!,0" } } AllyUpgrade3 { Name "Purchase a Heavy" Attribute "ubercharge rate penalty" Cap 0.999 Increment -0.001 Cost 600 Description "Purchase a bot to assist you in defending!" // Additional description line AllowPlayerClass Engineer PlayerUpgrade 1 OnApply // If parameter is empty, the upgrade level is passed instead as parameter { Output "!activator,$displaytextchat,You have purchased a robot!,0" Output "Ally3Relay,Trigger,,0,-1" } OnDowngrade //If parameter is empty, the upgrade level is passed instead as parameter { Output "Ally3DisableRelay,Trigger,,0,-1" Output "!activator,$displaytextchat,You have refunded a robot!,0" } } } ClassLimit //Limits the number of specified classes { Scout 0 Soldier 0 Pyro 0 Demoman 0 HeavyWeapons 0 Medic 0 Sniper 0 Spy 0 } PlayerAttributes //Player attributes appied for the whole mission { "fire rate bonus" 10 "collect currency on kill" 1 "airblast vulnerability multiplier" 3 Engineer //Attributes limited to Engineer only { "engy sentry fire rate increased" 5 "building max level" 1 } } ItemWhiteList { Classname "tf_weapon_pistol" Classname "tf_weapon_wrench" Classname "tf_weapon_pda_engineer_build" Classname "tf_weapon_pda_engineer_destroy" Classname "tf_weapon_builder" } Templates { Scout_Mk_I { Name "Scout Mk. I" Health 200 Skill Hard Scale 1.7 Template T_TFBot_Scout_Melee Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.25 "damage causes airblast" 1 } } Heavy_Mk_I { Name "Heavy Mk. I" Health 600 Class HeavyWeapons Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_minigun" Item "tf_weapon_shotgun_hwg" Item "tf_weapon_fists" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.25 "damage causes airblast" 1 } } Demo_Mk_I { Health 300 Name "Demoman Mk. I" Class Demoman Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_grenadelauncher" Item "tf_weapon_pipebomblauncher" Item "tf_weapon_bottle" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.25 "damage causes airblast" 1 } } Pyro_Mk_I { Health 300 Name "Pyro Mk. I" Class Pyro Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_bonesaw" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.25 "damage causes airblast" 1 "health regen" 20 } } Scout_Mk_II { Name "Scout Mk. II" Health 400 Skill Hard Scale 1.7 Template T_TFBot_Scout_Melee Item "summer shades" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.4 "damage causes airblast" 1 } } Heavy_Mk_II { Name "Heavy Mk. II" Health 1200 Class HeavyWeapons Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_minigun" Item "tf_weapon_shotgun_hwg" Item "tf_weapon_fists" Item "summer shades" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.4 "damage causes airblast" 1 } } Demo_Mk_II { Health 600 Name "Demoman Mk. II" Class Demoman Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_grenadelauncher" Item "tf_weapon_pipebomblauncher" Item "tf_weapon_bottle" Item "summer shades" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.4 "damage causes airblast" 1 } } Pyro_Mk_II { Health 600 Name "Pyro Mk. II" Class Pyro Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_bonesaw" Item "summer shades" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.4 "damage causes airblast" 1 "health regen" 40 } } Scout_Mk_III { Name "Scout Mk. III" Health 800 Skill Hard Scale 1.7 Template T_TFBot_Scout_Melee Item "the macho mann" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.65 "damage causes airblast" 1 } } Heavy_Mk_III { Name "Heavy Mk. III" Health 2400 Class HeavyWeapons Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_minigun" Item "tf_weapon_shotgun_hwg" Item "tf_weapon_fists" Item "the macho mann" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.65 "damage causes airblast" 1 } } Demo_Mk_III { Health 1200 Name "Demoman Mk. III" Class Demoman Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_grenadelauncher" Item "tf_weapon_pipebomblauncher" Item "tf_weapon_bottle" Item "the macho mann" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.65 "damage causes airblast" 1 } } Pyro_Mk_III { Health 1200 Name "Pyro Mk. III" Class Pyro Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_bonesaw" Item "the macho mann" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.65 "damage causes airblast" 1 "health regen" 60 } } Scout_Mk_IV { Name "Scout Mk. IV" Health 1200 Skill Hard Scale 1.7 Template T_TFBot_Scout_Melee Item "the tundra top" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.8 "damage causes airblast" 1 } } Heavy_Mk_IV { Name "Heavy Mk. IV" Health 3600 Class HeavyWeapons Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_minigun" Item "tf_weapon_shotgun_hwg" Item "tf_weapon_fists" Item "the tundra top" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.8 "damage causes airblast" 1 } } Demo_Mk_IV { Health 1800 Name "Demoman Mk. IV" Class Demoman Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_grenadelauncher" Item "tf_weapon_pipebomblauncher" Item "tf_weapon_bottle" Item "the tundra top" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.8 "damage causes airblast" 1 } } Pyro_Mk_IV { Health 1800 Name "Pyro Mk. IV" Class Pyro Skill Hard Scale 1.7 WeaponRestrictions MeleeOnly Item "tf_weapon_bonesaw" Item "the tundra top" Attributes "MiniBoss" CharacterAttributes { "move speed penalty" 0.8 "damage causes airblast" 1 "health regen" 100 } } Soldier_Boss_Mk_I { Health 10000 Name "Soldier Mk. I" Class Soldier Skill Hard Scale 1.9 WeaponRestrictions PrimaryOnly Item "tf_weapon_rocketlauncher" Attributes "MiniBoss" Attributes "UseBossHealthBar" HomingRockets { TurnPower 30 RocketSpeed 0.05 Acceleration 4 MaxAimError 360 } CharacterAttributes { "damage bonus" 3 "move speed penalty" 0.2 "damage causes airblast" 1 "Reload time increased" 5 "clip size penalty" 0.75 "blast dmg to self increased" 0 } } Soldier_Boss_Mk_II { Health 20000 Name "Soldier Mk. II" Class Soldier Skill Hard Scale 1.9 WeaponRestrictions PrimaryOnly Item "tf_weapon_rocketlauncher" Attributes "MiniBoss" Attributes "UseBossHealthBar" HomingRockets { TurnPower 30 RocketSpeed 0.05 Acceleration 6 MaxAimError 360 } CharacterAttributes { "damage bonus" 3 "move speed penalty" 0.35 "damage causes airblast" 1 "Reload time increased" 4 "clip size penalty" 0.75 "blast dmg to self increased" 0 } } Soldier_Boss_Mk_III { Health 40000 Name "Soldier Mk. III" Class Soldier Skill Hard Scale 1.9 WeaponRestrictions PrimaryOnly Item "tf_weapon_rocketlauncher" Attributes "MiniBoss" Attributes "UseBossHealthBar" HomingRockets { TurnPower 30 RocketSpeed 0.05 Acceleration 10 MaxAimError 360 } CharacterAttributes { "damage bonus" 3 "move speed penalty" 0.5 "damage causes airblast" 1 "Reload time increased" 3 "clip size penalty" 0.75 "blast dmg to self increased" 0 } } Soldier_Boss_Mk_IV { Health 60000 Name "Soldier Mk. IV" Class Soldier Skill Hard Scale 1.9 WeaponRestrictions PrimaryOnly Item "tf_weapon_rocketlauncher" Attributes "MiniBoss" Attributes "UseBossHealthBar" HomingRockets { TurnPower 30 RocketSpeed 0.05 Acceleration 16 MaxAimError 360 } CharacterAttributes { "damage bonus" 3 "move speed penalty" 0.65 "damage causes airblast" 1 "Reload time increased" 1.5 "clip size penalty" 0.75 "blast dmg to self increased" 0 } } Assist1 { Class Scout Name "Bat Scout" WeaponRestrictions MeleeOnly ClassIcon red2_lite Action Mobber Addcond { Index 43 } } Assist2 { Template T_TFBot_Demoman Name "Demoman" ClassIcon red2_lite Skill Hard CharacterAttributes { "clip size penalty" 0.25 "damage bonus" 0.5 } Addcond { Index 43 } } Assist3 { Class HeavyWeapons Name "Heavy" Skill Easy ClassIcon red2_lite CharacterAttributes { "damage bonus" 0.2 } Addcond { Index 43 } } } Wave //WAVE 1 { Explanation { Line "{blue}This mission is balanced for 1 player. Playing with more players makes this mission easier." Line "{red}You may only play as stock Engineer in this mission." Line "{00ff00}Player upgrades allow you to summon red allies. If playing with multiple players, only 1 needs to buy them." Line "{00ff00}Normal bots purchased spawn once every 20 seconds if they die. Purchased giants only spawn once per wave." } WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name Main1 TotalCurrency 100 TotalCount 10 MaxActive 10 SpawnCount 1 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 6 Squad { TFBot { Template Scout_Mk_I } } } Wavespawn { Name Main2 WaitForAllSpawned Main1 TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 1 Where spawnbot WaitBeforeStarting 12 WaitBetweenSpawns 8 TFBot { Template Heavy_Mk_I } } Wavespawn { Name Main3 WaitForAllDead Main2 TotalCurrency 100 TotalCount 6 MaxActive 6 SpawnCount 1 Where spawnbot_aggr WaitBeforeStarting 0 WaitBetweenSpawns 8 TFBot { Template Demo_Mk_I } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn1 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist1 } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn2 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist2 } } } Wave //WAVE 2 { WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name Main1 TotalCurrency 100 TotalCount 10 MaxActive 10 SpawnCount 2 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 2.5 TFBot { Template Scout_Mk_I } } WaveSpawn { WaitForAllSpawned Main1 Name Main2 TotalCurrency 100 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 15 WaitBetweenSpawns 6 TFBot { Template Pyro_Mk_I } } WaveSpawn { WaitForAllSpawned Main2 Name Main3 TotalCurrency 100 TotalCount 6 MaxActive 6 SpawnCount 1 Where spawnbot WaitBeforeStarting 10 WaitBetweenSpawns 5 TFBot { Template Heavy_Mk_I } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn1 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist1 } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn2 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist2 } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn3 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist3 } } } Wave //WAVE 3 { WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Name Main1 TotalCurrency 100 TotalCount 3 MaxActive 3 SpawnCount 1 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 18 TFBot { Template Scout_Mk_II } } WaveSpawn { WaitForAllSpawned Main1 Name Main2 TotalCurrency 100 TotalCount 2 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 30 WaitBetweenSpawns 18 TFBot { Template Heavy_Mk_II } } WaveSpawn { WaitForAllSpawned Main1 Name Main3 TotalCurrency 100 TotalCount 12 MaxActive 12 SpawnCount 1 Where spawnbot_aggr WaitBeforeStarting 50 WaitBetweenSpawns 8 TFBot { Template Demo_Mk_I } } WaveSpawn { WaitForAllDead Main3 TotalCurrency 100 TotalCount 1 MaxActive 1 SpawnCount 1 Where spawnbot WaitBeforeStarting 0 WaitBetweenSpawns 18 TFBot { Template Heavy_Mk_III } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn1 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist1 } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn2 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist2 } } Wavespawn { TotalCurrency 0 TotalCount 1 MaxActive 1 SpawnCount 1 Where assistspawn3 WaitBeforeStarting 1 WaitBetweenSpawns 20 Support 1 TFBot { Template Assist3 } } } Wave //WAVE 4 { WaitWhenDone 65 Checkpoint Yes StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } } }