#base robot_standard.pop #base robot_giant.pop WaveSchedule { StartingCurrency 1984 CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 0 PointTemplates { CustomCanteensSetup { OnSpawnOutput { Target "@c@!activator" Action "$SetProp$m_usNumCharges" Param 0 Delay 0 } OnSpawnOutput { Target "!activator" Action "$SetVar$currentCustomCanteenCharges" Param 0 Delay 0 } OnSpawnOutput { Target "!activator" Action "$SetVar$lastUpdatedClass" Param "69" Delay 0 } } CustomCanteens { OnSpawnOutput { Target "canteen_input" Action "FireUser1" Delay 0.1 } OnSpawnOutput { Target "set_class_changed_value" Action "$SetKey$case01" Param "$$=!activator.m_iClass" Delay 0 } OnSpawnOutput { Target "set_class_changed_value" Action "$Format" Delay 0.01 } OnSpawnOutput { Target "class_changed_check" Action "TestActivator" Delay 0.02 } logic_case { //can't target $value with setkey "targetname" "set_class_changed_value" "case16" "$value %" "case01" "def" "OnDefault" "class_changed_check,AddOutput,,0,-1" } $filter_variable { //check if player changed class since last canteen applied update //in which case reset their charges count "targetname" "class_changed_check" "$name" "lastUpdatedClass" "$value" "-1" //to be set later "$compare" "equal" "Negated" "1" "OnPass" "player,$SetVar$currentCustomCanteenCharges,0,0,-1" "OnPass" "player,$SetProp$m_usNumCharges,0,0,-1" } logic_branch { //bool for if player has vanilla canteen "targetname" "vanilla_canteens_bool" "InitialValue" "0" "OnTrue" "!activator,$SetVar$currentCustomCanteenCharges,0,-1" } logic_compare { //check if player owns any vanilla canteen incase a vanilla canteen is bought with a custom canteen equipped //in which case, remove all current current canteens charges "targetname" "vanilla_canteens_check" "CompareValue" "1988" "OnNotEqualTo" "vanilla_canteens_bool,SetValue,1,0,-1" } logic_compare { //check if m_usNumCharges is different from currentCustomCanteenCharges variable "targetname" "canteen_input_used_check" "CompareValue" "69420" //to be set later "OnLessThan" "canteen_owned_check,TestActivator,,0,-1" } logic_compare { "targetname" "sanitize_canteen_input" "CompareValue" "6900" //"OnLessThan" "player,$DisplayTextChat,,0,-1" "OnLessThan" "canteen_input_used_check,SetCompareValue,$$=!activator.currentCustomCanteenCharges,0,-1" "OnLessThan" "canteen_input_used_check,SetValueCompare,,0.01,-1" } logic_relay { "targetname" "canteen_input" //since $getprop with @c@ work like an index loop doing the applied output on every child and default to a set value if the prop index doesn't exist //I can hook it to a logic_compare and see if the input is different from the default value "OnUser1" "@c@!activator,$GetProp$m_usNumCharges,sanitize_canteen_input|SetValueCompare|6900,0,-1" "OnUser1" "vanilla_canteens_bool,SetValue,0,0,-1" //reset for this cycle //test for vanilla cans "OnUser1" "!activator,$GetItemAttribute,9|critboost|vanilla_canteens_check|SetValueCompare|1988,0,-1" "OnUser1" "!activator,$GetItemAttribute,9|ubercharge|vanilla_canteens_check|SetValueCompare|1988,0,-1" "OnUser1" "!activator,$GetItemAttribute,9|refill_ammo|vanilla_canteens_check|SetValueCompare|1988,0,-1" "OnUser1" "!activator,$GetItemAttribute,9|recall|vanilla_canteens_check|SetValueCompare|1988,0,-1" "OnUser1" "!activator,$GetItemAttribute,9|building instant upgrade|vanilla_canteens_check|SetValueCompare|1988,0,-1" "OnUser1" "vanilla_canteens_bool,Test,,0.01,-1" "OnUser1" "!self,FireUser1,,0.2,-1" } logic_compare { //check if canteen count is at 0 "targetname" "canteen_is_empty" "CompareValue" "0" "OnEqualTo" "on_canteen_empty,Trigger,,0,-1" "OnUser1" "!activator,$GetVar$currentCustomCanteenCharges,canteen_is_empty|SetValueCompare|-1,0,-1" } logic_relay { //triggered after a successful custom canteen use "targetname" "canteen_input_success" "spawnflags" "2" "OnTrigger" "!activator,$SetVar$currentCustomCanteenCharges,$$=!activator.currentCustomCanteenCharges - 1,0,-1" "OnTrigger" "@c@!activator,$SetProp$m_usNumCharges,$$=!activator.currentCustomCanteenCharges - 1,0,-1" "OnTrigger" "canteen_is_empty,FireUser1,,0.01,-1" } $filter_variable { //check if player has any remaining canteen charges "targetname" "canteen_owned_check" "$name" "currentCustomCanteenCharges" "$value" "0" "$compare" "greater than" "Negated" "0" "OnPass" "canteen_effect,TestActivator,,0,-1" } $filter_variable { "targetname" "canteen_effect" //speed boost canteen "$value" "1" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}SPEED BOOST {reset}Power Up Canteen!,0,-1" "OnPass" "!activator,$AddCond,32,0,-1" "OnPass" "!activator,$RemoveCond,32,5,-1" } filter_activator_tfteam { "targetname" "filter_is_blue" "Negated" "0" "TeamNum" "3" } $filter_sendprop { "targetname" "filter_is_not_giant" "$name" "m_bIsMiniBoss" "$value" "0" "$compare" "equal" "Negated" "0" } filter_multi { "targetname" "filter_can_be_sapped" "Negated" "0" "FilterType" "0" "Filter01" "filter_is_blue" "Filter02" "filter_is_not_giant" } trigger_multiple { "targetname" "reprogram_canteen_apply" "origin" "0 0 0" "mins" "-300.0 -300.0 -300.0" "maxs" "300.0 300.0 300.0" "spawnflags" "1" "StartDisabled" "1" "filtername" "filter_can_be_sapped" "OnStartTouch" "!activator,$AddPlayerAttribute,receive friendly fire|1,0,-1" "OnStartTouch" "!activator,$AddCond,43,0,-1" "OnStartTouch" "!activator,$AddCond,50,0,-1" "OnStartTouch" "!activator,$RemovePlayerAttribute,receive friendly fire,8,-1" "OnStartTouch" "!activator,$RemoveCond,43,8,-1" "OnStartTouch" "!activator,$RemoveCond,50,8,-1" "OnStartTouch" "!activator,$Suicide,50,8,-1" //self-destruct bot after done reprogramming "OnUser1" "!self,Enable,,0,-1" "OnUser1" "!self,Disable,,0.01,-1" } info_particle_system { "targetname" "sapper_effect" "effect_name" "Explosion_ShockWave_01" "flag_as_weather" "0" "start_active" "0" } $filter_variable { "targetname" "canteen_effect" //reprogram canteen "$value" "2" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}REPROGRAM {reset}Power Up Canteen!,0,-1" "OnPass" "sapper_effect,Stop,,0,-1" "OnPass" "sapper_effect,Start,,0.01,-1" "OnPass" "reprogram_canteen_apply,FireUser1,,0,-1" } $filter_variable { "targetname" "canteen_effect" //berserk canteen "$value" "3" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}BERSERK {reset}Power Up Canteen!,0,-1" //force minigun to stop reving/sniper unscope "OnPass" "!activator,$AddItemAttribute,alt-fire disabled|1|0,0,-1" "OnPass" "!activator,$Addcond,41,0,-1" "OnPass" "!activator,$Addcond,46,0,-1" "OnPass" "!activator,$WeaponSwitchSlot,2,0.01,-1" "OnPass" "!activator,$AddPlayerAttribute,CARD: damage bonus|1.25,0,-1" //"OnPass" "!activator,$AddItemAttribute,fists have radial buff|1|2,0,-1" //"OnPass" "!activator,$AddPlayerAttribute,melee range multiplier|1.1,0,-1" "OnPass" "!activator,$AddPlayerAttribute,melee attack rate bonus|0.8,0,-1" "OnPass" "!activator,$WeaponSwitchSlot,2,1.5,-1" //for revved up miniguns "OnPass" "!activator,$RemoveItemAttribute,alt-fire disabled|0,5,-1" "OnPass" "!activator,$Removecond,46,5,-1" "OnPass" "!activator,$RemovePlayerAttribute,CARD: damage bonus,5,-1" //"OnPass" "!activator,$RemoveItemAttribute,fists have radial buff|2,5,-1" //"OnPass" "!activator,$RemovePlayerAttribute,melee range multiplier,5,-1" "OnPass" "!activator,$RemovePlayerAttribute,melee attack rate bonus,5,-1" "OnPass" "!activator,$Removecond,41,5,-1" } $filter_variable { "targetname" "canteen_effect" //adrenaline canteen "$value" "4" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}ADRENALINE {reset}Power Up Canteen!,0,-1" "OnPass" "!activator,$Addcond,46,0,-1" "OnPass" "!activator,$AddPlayerAttribute,CARD: damage bonus|1.5,0,-1" "OnPass" "!activator,$AddPlayerAttribute,CARD: move speed bonus|1.2,0,-1" "OnPass" "!activator,$AddPlayerAttribute,CARD: health regen|5,0,-1" "OnPass" "!activator,$Addcond,46,0,-1" "OnPass" "!activator,$Removecond,46,5,-1" "OnPass" "!activator,$RemovePlayerAttribute,CARD: damage bonus,5,-1" "OnPass" "!activator,$RemovePlayerAttribute,CARD: move speed bonus,5,-1" "OnPass" "!activator,$RemovePlayerAttribute,CARD: health regen,5,-1" //fatigue "OnPass" "!activator,$Addcond,15,5,-1" "OnPass" "!activator,$AddPlayerAttribute,damage penalty|0.7,5,-1" "OnPass" "!activator,$AddPlayerAttribute,move speed penalty|0.8,5,-1" "OnPass" "!activator,$Removecond,15,10,-1" "OnPass" "!activator,$RemovePlayerAttribute,damage penalty,10,-1" "OnPass" "!activator,$RemovePlayerAttribute,move speed penalty,10,-1" } logic_relay { //proxy relay to deapply stealth, deapplication is cancelled upon using a new stealth canteen to prevent overlap "targetname" "stealth_can_duration" "spawnflags" "2" "OnTrigger" "!activator,$Removecond,64,14.9,-1" } $filter_variable { "targetname" "canteen_effect" //stealth canteen "$value" "5" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}STEALTH {reset}Power Up Canteen!,0,-1" "OnPass" "stealth_can_duration,$CancelPending,,0,-1" "OnPass" "!activator,$Addcond,64,0,-1" "OnPass" "stealth_can_duration,Trigger,,0.1,-1" } trigger_multiple { "targetname" "piss_apply" "origin" "0 0 0" "mins" "-1000.0 -1000.0 -1000.0" "maxs" "1000.0 1000.0 1000.0" "spawnflags" "1" "StartDisabled" "1" "filtername" "filter_is_blue" "OnStartTouch" "!activator,$AddCond,24,0,-1" "OnStartTouch" "!activator,$RemoveCond,24,15,-1" "OnUser1" "!self,Enable,,0,-1" "OnUser1" "!self,Disable,,0.01,-1" } info_particle_system { "targetname" "piss_effect" "effect_name" "eyeboss_death" "flag_as_weather" "0" "start_active" "0" } $filter_variable { "targetname" "canteen_effect" //piss canteen "$value" "6" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}PISSPLOSION {reset}Power Up Canteen!,0,-1" "OnPass" "piss_effect,Stop,,0,-1" "OnPass" "piss_effect,Start,,0.01,-1" "OnPass" "piss_apply,FireUser1,,0,-1" } $filter_variable { "targetname" "canteen_effect" //knockback immunity canteen "$value" "69" "$name" "canteenIndex" "$compare" "equal" "Negated" "0" "OnPass" "canteen_input_success,Trigger,,0,-1" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {9BBF4D}KNOCKBACK IMMUNITY {reset}Power Up Canteen!,0,-1" "OnPass" "!activator,$Addcond,20,0,-1" "OnPass" "!activator,$AddPlayerAttribute,damage force reduction|0.001,0,-1" "OnPass" "!activator,$Removecond,20,5,-1" "OnPass" "!activator,$RemovePlayerAttribute,damage force reduction,5,-1" } } CanteenPurchase { NoFixup 1 logic_relay { "targetname" "canteen_count_update" "spawnflags" "2" "$OnUser5" "@c@!activator,$SetProp$m_usNumCharges,,0,-1" "$OnUser5" "!activator,$SetVar$currentCustomCanteenCharges,,0,-1" "$OnUser5" "!activator,$GetProp$m_iClass,!activator|$SetVar$lastUpdatedClass|69,0,-1" } logic_relay { "targetname" "on_canteen_empty" "spawnflags" "2" "OnTrigger" "!activator,$RemoveItemAttribute,refill_ammo|9,0,-1" "OnTrigger" "!activator,$RemoveItemAttribute,special item description|9,0,-1" "OnTrigger" "!activator,$SetVar$canteenIndex,-1,0,-1" } } } SpawnTemplate CanteenPurchase PlayerSpawnTemplate { Name CustomCanteens Origin "0 0 0" } PlayerSpawnOnceTemplate { Name CustomCanteensSetup Origin "0 0 0" } //todo: handle wave restore ExtendedUpgrades { //canteens speed_can { Name "Speed Boost Canteen" //random attribute, preferably one that doesn't do anything nor show up on the player, basically just meant to index Attribute "mvm completed challenges bitmask" Cap 5 Increment 1 Cost 50 UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade re_can} DisallowedUpgrade {Upgrade add_can} DisallowedUpgrade {Upgrade ber_can} DisallowedUpgrade {Upgrade cloak_can} DisallowedUpgrade {Upgrade piss_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Gain a speed boost for 5 seconds|9,0" Output "!activator,$SetVar$canteenIndex,1,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Gain a speed boost for 5 seconds|9,0" Output "!activator,$SetVar$canteenIndex,1,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Gain a speed boost for 5 seconds|9,0" Output "!activator,$SetVar$canteenIndex,1,0" } } re_can { Name "Reprogram Canteen" Attribute "limited quantity item" Cap 10 Increment 1 Cost 5 Description "Reprogram non-giant enemies in a radius" UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade speed_can} DisallowedUpgrade {Upgrade add_can} DisallowedUpgrade {Upgrade ber_can} DisallowedUpgrade {Upgrade cloak_can} DisallowedUpgrade {Upgrade piss_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Reprogram non-giant enemies in a radius|9,0" Output "!activator,$SetVar$canteenIndex,2,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Reprogram non-giant enemies in a radius|9,0" Output "!activator,$SetVar$canteenIndex,2,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Reprogram non-giant enemies in a radius|9,0" Output "!activator,$SetVar$canteenIndex,2,0" } } ber_can { Name "Berserk Canteen" Attribute "throwable healing" Cap 3 Increment 1 Cost 5 Description "Locked to melee for 5 seconds, greatly increased melee power" UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade re_can} DisallowedUpgrade {Upgrade speed_can} DisallowedUpgrade {Upgrade add_can} DisallowedUpgrade {Upgrade cloak_can} DisallowedUpgrade {Upgrade piss_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Lock to melee but increase melee power|9,0" Output "!activator,$SetVar$canteenIndex,3,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Lock to melee but increase melee power|9,0" Output "!activator,$SetVar$canteenIndex,3,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Lock to melee but increase melee power|9,0" Output "!activator,$SetVar$canteenIndex,3,0" } } add_can { Name "Adrenaline Canteen" Attribute "throwable damage" Cap 3 Increment 1 Cost 5 Description "Gain various buffs for 5 seconds, become weakened for a duration afterward" UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade re_can} DisallowedUpgrade {Upgrade speed_can} DisallowedUpgrade {Upgrade ber_can} DisallowedUpgrade {Upgrade cloak_can} DisallowedUpgrade {Upgrade piss_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Gain various buffs for 5 seconds and become fatigue briefly after duration|9,0" Output "!activator,$SetVar$canteenIndex,4,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Gain various buffs for 5 seconds and become fatigue briefly after duration|9,0" Output "!activator,$SetVar$canteenIndex,4,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Gain various buffs for 5 seconds and become fatigue briefly after duration|9,0" Output "!activator,$SetVar$canteenIndex,4,0" } } cloak_can { Name "Stealth Canteen" Attribute "throwable particle trail only" Cap 3 Increment 1 Cost 5 Description "Cloak for up to 15 seconds, cloak is cancelled when attacking" UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade re_can} DisallowedUpgrade {Upgrade speed_can} DisallowedUpgrade {Upgrade ber_can} DisallowedUpgrade {Upgrade add_can} DisallowedUpgrade {Upgrade knock_can} DisallowedUpgrade {Upgrade piss_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Cloak for up to 15 seconds|9,0" Output "!activator,$SetVar$canteenIndex,5,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Cloak for up to 15 seconds|9,0" Output "!activator,$SetVar$canteenIndex,5,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Cloak for up to 15 seconds|9,0" Output "!activator,$SetVar$canteenIndex,5,0" } } piss_can { Name "Pissplosion Canteen" Attribute "decoded by itemdefindex" Cap 3 Increment 1 Cost 5 Description "Apply Jarate to enemies within a large radius" UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade re_can} DisallowedUpgrade {Upgrade speed_can} DisallowedUpgrade {Upgrade ber_can} DisallowedUpgrade {Upgrade add_can} DisallowedUpgrade {Upgrade cloak_can} DisallowedUpgrade {Upgrade knock_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Apply Jarate to enemies within a large radius|9,0" Output "!activator,$SetVar$canteenIndex,6,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Apply Jarate to enemies within a large radius|9,0" Output "!activator,$SetVar$canteenIndex,6,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Apply Jarate to enemies within a large radius|9,0" Output "!activator,$SetVar$canteenIndex,6,0" } } knock_can { Name "Knockback Immunity Canteen" Attribute "elevate quality" Cap 3 Increment 1 Cost 5 Description "fuck the last subwave" UIGroup 2 AllowedWeapons { Classname "tf_powerup_bottle" } DisallowedUpgrade {Upgrade re_can} DisallowedUpgrade {Upgrade speed_can} DisallowedUpgrade {Upgrade ber_can} DisallowedUpgrade {Upgrade add_can} DisallowedUpgrade {Upgrade cloak_can} DisallowedUpgrade {Upgrade piss_can} OnUpgrade { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Knockback resistance for 5 seconds|9,0" Output "!activator,$SetVar$canteenIndex,69,0" } OnApply { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Knockback resistance for 5 seconds|9,0" Output "!activator,$SetVar$canteenIndex,69,0" } OnDowngrade { Output "canteen_count_update,$FireUser5," Output "on_canteen_empty,Trigger,,0" } OnRestore { Output "canteen_count_update,$FireUser5," Output "!activator,$AddItemAttribute,special item description|Consumable: Knockback resistance for 5 seconds|9,0" Output "!activator,$SetVar$canteenIndex,69,0" } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot TotalCount 5 MaxActive 5 SpawnCount 5 WaitBeforeStarting 0.1 WaitBetweenSpawns 0 TotalCurrency 0 TFBot { Class Heavyweapons Attributes SuppressFire } } WaveSpawn { Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 0 TFBot { Template T_TFBot_Giant_Heavyweapons tag bot_giant Attributes SuppressFire } } } }