#base robot_standard.pop #base robot_giant.pop WaveSchedule { StartingCurrency 1200 CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 2 AddSentryBusterWhenDamageDealtExceeds 3000 AddSentryBusterWhenKillCountExceeds 15 Advanced 1 RedPlayersAreRobots 1 PlayerRobotsUsePlayerAnimation 1 BotHumansHaveRobotVoice 1 ExtraSpawnPoint { Name "outside" X 481 Y -338 Z 64 TeamNum 3 } CustomWeapon { "ilovecupcakes" { OriginalItemName "The Loch-n-load" "custom projectile model" "models/empty.mdl" "sticky air burst mode" 1 "damage bonus" 0.001 "grenade explode on impact" 1 "projectile trail particle" "~healshot_trail_red" "explosion particle" "spell_overheal_red" "custom weapon fire sound" "Heavy.MVM_MobJabber" } "mega_fire_volley" { OriginalItemName "TF_WEAPON_ROCKETLAUNCHER" "custom item model" "models/empty.mdl" "fire rate bonus" 1 "Projectile speed increased" 1 "projectile gravity" 500 "ignores other projectiles" 1 "custom impact sound" "Breakable.Glass" "custom projectile model" "models/workshop/weapons/c_models/c_scotland_shard/c_scotland_shard.mdl" "projectile trail particle" "burninggibs" "blast radius increased" 0.6 "grenade explode on impact" 1 } } PointTemplates { MissionUtilitySetup { // a set of utility entities NoFixUp 1 point_populator_interface { "targetname" "pop_interface" } point_clientcommand { "targetname" "client_commander" } trigger_hurt { "targetname" "cleanupbots" "origin" "0 0 0" "mins" "-5000 -5000 -5000" //Trigger bounds, relative to origin "maxs" "5000 5000 5000" "damage" "3000000" "damagecap" "3000000" "damagemodel" "0" "damagetype" "16" "filtername" "filter_is_blue" "nodmgforce" "1" "spawnflags" "1" "StartDisabled" "1" } filter_activator_class { "targetname" "filter_is_not_player" "Negated" "1" "filterclass" "player" } filter_activator_class { "targetname" "filter_is_player" "Negated" "0" "filterclass" "player" } filter_activator_tfteam { "targetname" "filter_is_blue" "Negated" "0" "TeamNum" "3" } filter_activator_tfteam { "targetname" "filter_is_red" "Negated" "0" "TeamNum" "2" } filter_multi { "targetname" "filter_is_red_player" "Negated" "0" "FilterType" "0" //and "Filter01" "filter_is_red" "Filter02" "filter_is_player" } filter_tf_condition { "targetname" "_filter_is_not_ubered" "Negated" "1" "condition" "5" //medigun uber } filter_tf_condition { "targetname" "_filter_is_not_ubered2" "Negated" "1" "condition" "52" //canteen uber } filter_tf_condition { "targetname" "_filter_is_not_ubered3" "Negated" "1" "condition" "51" //hidden uber } filter_tf_condition { "targetname" "_filter_is_not_ubered4" "Negated" "1" "condition" "57" //WoF uber } filter_multi { // is red player, AND is NOT ubered "targetname" "filter_is_red_not_ubered" "Negated" "0" "FilterType" "0" //and "Filter01" "filter_is_red" "Filter02" "_filter_is_not_ubered" "Filter03" "_filter_is_not_ubered2" "Filter04" "_filter_is_not_ubered3" "Filter05" "_filter_is_not_ubered4" "Filter06" "filter_is_player" } filter_multi { // is blu player, AND is NOT ubered "targetname" "filter_is_blu_not_ubered" "Negated" "0" "FilterType" "0" //and "Filter01" "filter_is_blue" "Filter02" "_filter_is_not_ubered" "Filter03" "_filter_is_not_ubered2" "Filter04" "_filter_is_not_ubered3" "Filter05" "_filter_is_not_ubered4" "Filter06" "filter_is_player" } filter_multi { "targetname" "filter_not_ubered" "Negated" "0" "FilterType" "0" "Filter01" "_filter_is_not_ubered" "Filter02" "_filter_is_not_ubered2" "Filter03" "_filter_is_not_ubered3" "Filter04" "_filter_is_not_ubered4" "Filter05" "filter_is_player" } } missionsetup { // OnSpawnOutput // { // Target "tf_gamerules*" // Action "RunScriptCode" // Param " // ::ChargingBeastSetup <- function(player) { // player.ValidateScriptScope(); // local scope = player.GetScriptScope(); // // we create a game_text entity and store the handle in the player's scope so we can access it later // if(!scope.rawin(`chargeMeterText`) || !scope.chargeMeterText.IsValid()) { // scope.chargeMeterText <- SpawnEntityFromTable(`game_text`, { // targetname = `charge_text` // channel = 4 // message = `` // color = `255 0 0` // holdtime = 1.5 // x = 0.7 // y = 0.9 // spawnflags = 0 // as spawnflags is 0, this will only show to the activator // }); // } // scope.nextChargeTime <- Time(); // } // ::fullBar <- `////////////////////`; // ::emptyBar <- `--------------------`; // ::AttemptBeastCharge <- function(player) { // local scope = player.GetScriptScope() // // if the current time is past the nextChargeTime, then we do the charge // if(Time() > scope.nextChargeTime) { // player.AddCond(17) // EntFireByHandle(scope.chargeHurt, `Enable`, null, 0, null, null) // EntFireByHandle(player, `$RemoveCond`, `17`, 2, null, null) // EntFireByHandle(scope.chargeHurt, `Disable`, null, 1.5, null, null) // scope.nextChargeTime = Time() + 12 // // here is the charge display // local delay = 2 // for (local i = 0.0 ; i < 20.0 ; i += 1.0) { // local barString = `[` + fullBar.slice(20-i) + emptyBar.slice(i) + `]` // EntFireByHandle(scope.chargeMeterText, `$SetData$m_iszMessage`, barString, (i/2) + delay, null, null) // EntFireByHandle(scope.chargeMeterText, `Display`, null, (i/2) + delay + 0.1, player, null) // } // EntFireByHandle(scope.chargeMeterText, `$SetData$m_iszMessage`, `Ready!`, 10 + delay, null, null) // EntFireByHandle(scope.chargeMeterText, `Display`, null, 10.1 + delay, player, null) // EntFireByHandle(scope.chargeMeterText, `$SetData$m_iszMessage`, ``, 12 + delay, null, null) // } // } // " // Delay 0.0 // } OnSpawnOutput { Target "tf_gamerules" Action "RunScriptCode" Param "IncludeScript(`heavy_wep_test`)" Delay 0.0 } env_entity_maker { "targetname" "beastChargeMaker" "entitytemplate" "beastCharge" "$autoparent" 1 // for use with ForceSpawnAtEntityOrigin } } beastCharge { NoFixUp 0 OnSpawnOutput { Target "!activator" Action "RunScriptCode" Param "ChargingBeastSetup(self)" Delay 0.0 } trigger_multiple { "targetname" "chargeHurt" "origin" "0 0 0" "mins" "-100 -100 -10" "maxs" "100 100 80" "spawnflags" "64" //1: players; 64 everything "wait" "0.5" "StartDisabled" "1" "filtername" "filter_is_blu_not_ubered" "OnStartTouch" "@p@chargeHurtRunScriptCodeBeastChargeDamage(activator, self)0.2-1" } OnSpawnOutput { Target "chargeHurt" Action "SetParent" Param "!activator" Delay 0.0 } OnSpawnOutput { Target "chargeHurt" Action "RunScriptCode" Param "activator.GetScriptScope().chargeHurt <- self" Delay 0.2 } } pieceofshit { NoFixUp 0 OnSpawnOutput { Target "chuckingthemhealthkits" Action "$SetOwner" Param "!activator" Delay 0 } OnSpawnOutput { Target "chuckingthemhealthkits" Action "SetParent" Param "!activator" Delay 0.0 } OnSpawnOutput { Target "chuckingthemhealthkits" Action "RunScriptCode" Param " ThisIsAPieceOfShit(self, activator) " Delay 0.2 } tf_point_weapon_mimic { "targetname" "chuckingthemhealthkits" "origin" "50 0 65" "angles" "0 0 0" "teamnum" "2" "$weaponname" "ilovecupcakes" "$weaponnosound" "1" "SpeedMax" "400" "SpeedMin" "400" "$OnFire" "healyoumotherfucker,ForceSpawnAtEntityOrigin,!activator,0,-1" } OnSpawnOutput { Target "mimicname" Action "$SetOwner" Param "!activator" Delay 0 } env_entity_maker { //ent_fire breadGoopMortar FireMultiple 12 "targetname" "healyoumotherfucker" "entitytemplate" "amealfor4" "$autoparent" 1 // for use with ForceSpawnAtEntityOrigin } } fire_volley { NoFixUp 0 OnSpawnOutput { Target "pasoquevoyardiendo" Action "$SetOwner" Param "!activator" Delay 0 } OnSpawnOutput { Target "pasoquevoyardiendo" Action "SetParent" Param "!activator" Delay 0.0 } OnSpawnOutput { Target "pasoquevoyardiendo" Action "RunScriptCode" Param " ItsSoHot(self, activator) " Delay 0.2 } tf_point_weapon_mimic { "targetname" "pasoquevoyardiendo" "origin" "50 0 65" "angles" "0 0 0" "teamnum" "2" "$weaponname" "mega_fire_volley" "$weaponnosound" "1" "SpeedMax" "400" "SpeedMin" "400" "$OnFire" "look_fire,ForceSpawnAtEntityOrigin,!activator,0,-1" } OnSpawnOutput { Target "pasoquevoyardiendo" Action "$SetOwner" Param "!activator" Delay 0 } env_entity_maker { //ent_fire breadGoopMortar FireMultiple 12 "targetname" "look_fire" "entitytemplate" "molotov_wepflame" "$autoparent" 1 // for use with ForceSpawnAtEntityOrigin } } molotov_wepflame { KeepAlive 1 RemoveIfKilled "firetrigger" OnParentKilledOutput { Target firetrigger Action Kill Delay 5 } OnParentKilledOutput { Target firetrigger Action Enable Delay 0 } OnParentKilledOutput { Target fireparticle Action Start Delay 0 } info_target { "targetname" "letstest" "origin" "0 0 0" } info_particle_system { "targetname" "fireparticle" "parentname" "letstest" "effect_name" "lava_fireball_01" "start_active" "0" } trigger_hurt { "targetname" "firetrigger" "parentname" "letstest" "mins" "-60 -60 -60" "maxs" "60 60 60" "damagetype" "8" "damage" "4" "startdisabled" "1" "spawnflags" "64" "onhurtplayer" "!activator,$igniteplayerduration,5,0,-1" "$killicon" "firedeath" "filtername" "filter_is_blu_not_ubered" } } amealfor4 { KeepAlive 1 RemoveIfKilled "tasty" OnParentKilledOutput { Target "tasty" Action "$setkey$angles" Param "0 0 0" Delay 0.1 } OnSpawnOutput { Target "tasty" Action "Enable" Delay 0.1 } OnParentKilledOutput { Target "tasty" Action "Kill" Delay 15 } item_healthkit_small { "targetname" "tasty" "origin" "0 0 -5" "OnPlayerTouch" "!self,kill,,0.2,-1" "powerup_model" "models/items/medkit_small_bday.mdl" "TeamNum" "2" "startdisabled" "1" } } // missionstuffig // { // logic_relay // { // "targetname" "charging_beast_relay" // "OnTrigger" "!activator,$AddCond,17,0,-1" // "OnTrigger" "!activator,$RemoveCond,17,2,-1" // "OnTrigger" "disable_charging_relay,trigger,,2.1,-1" // } // logic_relay // { // "targetname" "disable_charging_relay" // "OnTrigger" "charging_beast_relay,disable,,0,-1" // "OnTrigger" "charge_test,$setkey$message,[--------------------],0,-1" // "OnTrigger" "charge_test,Display,,0.1,-1" // "OnTrigger" "charge_test,$setkey$message,[//------------------],1,-1" // "OnTrigger" "charge_test,Display,,1.1,-1" // "OnTrigger" "charge_test,$setkey$message,[////----------------],2,-1" // "OnTrigger" "charge_test,Display,,2.1,-1" // "OnTrigger" "charge_test,$setkey$message,[//////--------------],3,-1" // "OnTrigger" "charge_test,Display,,3.1,-1" // "OnTrigger" "charge_test,$setkey$message,[////////------------],4,-1" // "OnTrigger" "charge_test,Display,,4.1,-1" // "OnTrigger" "charge_test,$setkey$message,[//////////----------],5,-1" // "OnTrigger" "charge_test,Display,,5.1,-1" // "OnTrigger" "charge_test,$setkey$message,[////////////--------],6,-1" // "OnTrigger" "charge_test,Display,,6.1,-1" // "OnTrigger" "charge_test,$setkey$message,[//////////////------],7,-1" // "OnTrigger" "charge_test,Display,,7.1,-1" // "OnTrigger" "charge_test,$setkey$message,[////////////////----],8,-1" // "OnTrigger" "charge_test,Display,,8.1,-1" // "OnTrigger" "charge_test,$setkey$message,[//////////////////--],9,-1" // "OnTrigger" "charge_test,Display,,9.1,-1" // "OnTrigger" "charge_test,$setkey$message,READY!,10,-1" // "OnTrigger" "charge_test,Display,,10.1,-1" // "OnTrigger" "charging_beast_relay,enable,,10,-1" // } // game_text // { // "targetname" "charge_test" // "channel" "4" // "message" "[--------------------]" // "color" "255 0 0" // "holdtime" "1.5" // "x" "0.7" // "y" "0.9" // } // } } SpawnTemplate MissionUtilitySetup SpawnTemplate missionsetup ClassLimit { Soldier 0 Pyro 0 Demoman 0 Engineer 0 Medic 0 Sniper 0 Spy 0 Scout 0 Civilian 0 } ItemAttributes { ItemName "The Eviction Notice" "mod_maxhealth_drain_rate" 0 } ItemAttributes { ItemName "Gloves of Running Urgently" "mod_maxhealth_drain_rate" 0 } ItemAttributes { ItemName "The Holiday Punch" "always crit" 1 "taunt attack after end" 1 "melee cleave attack" 1 } ExtendedUpgrades { // upgrade // { // Name "+25 Max Health" // Custom name of the upgrade displayed on the menu. If absent, uses the attribute localized name instead // Attribute "max health additive bonus" // The attribute name // Cap 100 // Maximum amount of the attribute // Increment 25 // Attribute increment value per level // Cost 300 // Cost of the upgrade per level // PlayerUpgrade 1 // Is the upgrade a player upgrade // } MaxUpgradesTier // For tiered upgrades: Specify how many upgrades can be bought per tier. (1 by default) { 1 1 // Max 2 upgrades on tier 1 } MEGAKNIGHT { Name "MEGA KNIGHT!!!!" Attribute "ragdolls become ash" Description "Kill, jump, stomp - become a menace" Cap 1 Increment 1 Cost 800 Tier 1 SecondaryAttributes { "stomp building damage" 125 "kb fall radius" 250 "kb fall min velocity" 800 "kb fall force" 100 "kb fall damage" 100 "kb fall stun time" -1 "hand scale" 0.5 "boots falling stomp" 1 "provide on active" 1 "add attributes on kill" "major increased jump height|3.25|5" } AllowedWeapons { ItemName "Fists of Steel" } } steel_gauntlet { Name "Ironclad" Attribute "SET BONUS: max health additive bonus" Description "Become a Steel Gauntlet!" Cap 600 Increment 600 Cost 800 Tier 1 SecondaryAttributes { "health from packs increased" 0.5 "damage force reduction" 0.5 "always gib" 1 "model scale" 0.5 "patient overheal penalty" 0 } AllowedWeapons { ItemName "Fists of Steel" } } eviction_a { Name "30% DMG Bonus on Kill" Attribute "ragdolls become ash" Cap 1 Increment 1 // Attribute increment value per level Cost 500 // Cost of the upgrade per level AllowPlayerClass HeavyWeapons SecondaryAttributes { "add attributes on kill" "CARD: damage bonus|1.30|5" } AllowedWeapons { ItemName "The Eviction Notice" } } flaming_grus_a { Name "Ignite on hit" Attribute "Set DamageType Ignite" Cap 1 Increment 1 Cost 400 SecondaryAttributes { "weapon burn time increased" 0.5 } AllowedWeapons { ItemName "Gloves of Running Urgently" } } flaming_grus_b { Name "Mini-Crits Burning Enemies" Attribute "ragdolls become ash" Cap 1 Increment 1 Cost 400 Description "Alt-fire behaves like the Axtinguisher" RequiredUpgrade { Upgrade "flaming_grus_a" // Name of the upgrade, as specified in the outer block Level 1 // Minimum level after which the upgrade becomes enabled (Default: 1) } SecondaryAttributes { "alt fire attributes" "attack_minicrits_and_consumes_burning|1" } AllowedWeapons { ItemName "Gloves of Running Urgently" } } hes_cooking { Name "Force Feeding" Attribute "ragdolls become ash" Cap 1 Increment 1 Cost 400 Description "Alt-fire to throw cupcakes at people, whether they like it or not" SecondaryAttributes { "alt fire attack" 4.5 "alt fire attributes" "fire input on attack|!activator^RunScriptCode^EntFireByHandle(self.GetScriptScope().pasoquevoyardiendo, `FireOnce`, null, 0, null, null)" } OnApply // On upgrade output. Format: target,action,parameter,delay. If parameter is empty, the upgrade level is passed instead as parameter { Output "fire_volley,ForceSpawnAtEntityOrigin,!activator" } AllowedWeapons { ItemName "Frying Pan" } } holiday_punch_funnies { Name "Faster Taunt Attack" Attribute "taunt attack time mult" Cap 0.25 Increment -0.75 Cost 250 SecondaryAttributes { "gesture speed increase" 2 "provide on active" 1 } AllowedWeapons { ItemName "The Holiday Punch" ItemName "tf_weapon_fists" } } warrior_a { Name "Charging Beast" Attribute "always gib" Cap 1 Increment 1 Cost 400 Description "Taunt to charge like a demoknight" SecondaryAttributes { "fire input on taunt" "!activator^RunScriptCode^AttemptBeastCharge(self)" "addcond immunity" "7" "full charge turn control" 1 "charge recharge rate increased" 0.000001 } OnApply // On upgrade output. Format: target,action,parameter,delay. If parameter is empty, the upgrade level is passed instead as parameter { Output "beastChargeMaker,ForceSpawnAtEntityOrigin,!activator" } AllowedWeapons { ItemName "Warrior's Spirit" } } overall_dmg_bonus { Name "25% Damage Bonus" Attribute "damage bonus" Cap 2 Increment 0.25 // Attribute increment value per level Cost 400 // Cost of the upgrade per level AllowPlayerClass HeavyWeapons AllowedWeapons { ItemName "tf_weapon_fists" ItemName "Gloves of Running Urgently" ItemName "Upgradeable TF_WEAPON_FISTS" ItemName "Fists of Steel" ItemName "Apoco-Fists" } } dmg_bonus_evic { Name "20% Damage Bonus" Attribute "damage bonus" Cap 2.4 Increment 0.2 Cost 150 AllowPlayerClass HeavyWeapons AllowedWeapons { ItemName "The Eviction Notice" } } dmg_bonus_kgb_warrior { Name "25% Damage Bonus" Attribute "damage bonus" Cap 1.8 Increment 0.25 Cost 500 AllowPlayerClass HeavyWeapons AllowedWeapons { ItemName "Warrior's Spirit" ItemName "The Killing Gloves of Boxing" } } } Templates {} CustomWeapon { "The Minigun" { OriginalItemName "Upgradeable TF_WEAPON_MINIGUN" "cannot be upgraded" 1 } } ItemBlacklist //Disallows using specified weapons below { Name "TF_WEAPON_MINIGUN" Name "Natascha" Name "Upgradeable TF_WEAPON_MINIGUN" Name "Iron Curtain" Name "The Brass Beast" Name "Tomislav" Name "Festive Minigun 2011" Name "Silver Botkiller Minigun Mk.I" Name "Gold Botkiller Minigun Mk.I" Name "The Huo Long Heatmaker" Name "Promo Huo Long Heatmaker" Name "Rust Botkiller Minigun Mk.I" Name "Blood Botkiller Minigun Mk.I" Name "Carbonado Botkiller Minigun Mk.I" Name "Diamond Botkiller Minigun Mk.I" Name "Silver Botkiller Minigun Mk.II" Name "Gold Botkiller Minigun Mk.II" Name "concealedkiller_minigun_kingofthejungle" Name "craftsmann_minigun_ironwood" Name "craftsmann_minigun_antiqueannihilator" Name "teufort_minigun_warroom" Name "teufort_minigun_citizenpain" Name "powerhouse_flamethrower_turbinetorcher" Name "harvest_minigun_macabreweb" Name "harvest_minigun_pumpkinpatch" Name "harvest_minigun_nutcracker" Name "pyroland_minigun_braincandy" Name "pyroland_minigun_mistercuddles" Name "gentlemanne_medigun_highrollers" Name "gentlemanne_minigun_coffinnail" Name "gentlemanne_minigun_dressedtokill" Name "warbird_minigun_butcherbird" } ExtraLoadoutItems // Extra loadout items available after typing !missionitems in chat { AllowEquipOutsideSpawn 1 // Allow equipping items outside spawn HeavyWeapons // Player Class { Primary // Extended syntax, Item slot to use { Item "The Minigun" // Item name, custom weapon names are available Cost 4500 // The cost of the weapon (default: 0) AllowRefund 1 } // Available slots: // Primary // Secondary // Melee // PDA (construction kit, disguise kit) // PDA2 (destruction kit, watch) // Head // Misc // Action (canteen) // Misc2 } } Wave // Wave 1 { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } InitWaveOutput { Target holograms_3way_relay Action Trigger } WaveSpawn { Name "" WaitForAllDead "" Where outside TotalCount 100 MaxActive 100 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 0 TFBot { Template T_TFBot_Heavyweapons_Heavyweight_Champ Action Idle } } } }