#base robot_standard.pop #base robot_giant.pop tomboy { StartingCurrency 1984 CanBotsAttackWhileInSpawnRoom no RespawnWaveTime 0 LuaScript"function vitasawOnHit(_, activat, calle) local teamCheckInstance = ents.FindByName('vitasaw_team_check'); teamCheckInstance:AcceptInput('TestActivator',_,calle,activat); activat:SetName('vitasaw_caller'); end" PrecacheModel "models/props_mvm/mvm_comically_small_player_shield.mdl" LuaScriptFile "scripts/rejuvenator_hit_logic.lua" PointTemplates { FreelanceMercenary_Logic { OnSpawnOutput { Target "freelance_action_check" Action "Trigger" Delay 0 } OnSpawnOutput { Target "!activator" Action "$GetVar$PreFreelanceSwitchHealth" Param "apply_last_health|$SetKey$CompareValue|-1" Delay 0 } OnSpawnOutput { Target "apply_last_health" Action "Compare" Delay 0.06 } //apply health from previous class if switched logic_compare { "targetname" "apply_last_health" "InitialValue" "-1" "OnNotEqualTo" "!activator,$SetKey$health,$$=!activator.PreFreelanceSwitchHealth,-1,-1" "OnNotEqualTo" "!activator,$SetVar$PreFreelanceSwitchHealth,,0,-1" } $filter_sendprop { "targetname" "using_action" "$name" "m_bUsingActionSlot" "$value" "0" "$compare" "equal" "Negated" "1" "OnPass" "!activator,$SetVar$PreFreelanceSwitchHealth,$$= !activator.m_iHealth ,-1,-1" "OnPass" "!activator,$SwitchClassInPlace,$$= test ( !activator.m_iClass + 1 <= 9 , !activator.m_iClass + 1, 1 ) ,0,-1" } logic_relay { "targetname" "freelance_action_check" "spawnflags" "2" "OnTrigger" "using_action,TestActivator,,0,-1" "OnTrigger" "!self,Trigger,,0.1,-1" } } BabyFace_Spawn { OnSpawnOutput { Target "bbfb_relay" Action "Trigger" } logic_relay { "targetname" "bbfb_relay" "spawnflags" "2" "OnTrigger" "filter_has_maxcharge,TestActivator,,0,-1" "OnTrigger" "!self,Trigger,,0.2,-1" } $filter_sendprop { "targetname" "filter_has_maxcharge" "$name" "m_flHypeMeter" "$value" "99" "$compare" "greater than or equal" "Negated" "0" "OnPass" "!activator,$AddItemAttribute,add cond when active|46|0,0,-1" "OnPass" "!activator,$AddItemAttribute,reload time increased hidden|0.7|0,0,-1" "OnPass" "!activator,$AddItemAttribute,fire rate bonus HIDDEN|0.8|0,0,-1" "OnFail" "!activator,$RemoveItemAttribute,add cond when active|0,0,-1" "OnFail" "!activator,$RemoveItemAttribute,reload time increased hidden|0,0,-1" "OnFail" "!activator,$RemoveItemAttribute,fire rate bonus HIDDEN|0,0,-1" } } DirectHit_Spawn { //ensure rocket is at 1 on spawn OnSpawnOutput { Target "!activator" Action "$Regenerate" Delay 0 } } DirectHit_Rework_Global { NoFixup 1 //apply cooldown period where you can't reload rocket on hit very briefly //to avoid reloading multiple times in 1 tick through splash damage $filter_variable { "targetname" "_direct_hit_not_on_cooldown" "$name" "NoDirectHitReload" "$value" "1" "$compare" "equal" "Negated" "1" "OnPass" "@e@m_hMyWeapons@!activator,$SetProp$m_iClip1,$$=@e@m_hMyWeapons@!activator.m_iClip1 + 1,0,-1" "OnPass" "!activator,$SetVar$NoDirectHitReload,1,-1,-1" "OnPass" "!activator,$SetVar$NoDirectHitReload,,0,-1" } logic_relay { "targetname" "direct_hit_on_hit" "spawnflags" "2" "OnTrigger" "_direct_hit_not_on_cooldown,TestActivator,,0,-1"//"@e@m_hMyWeapons@!activator,$SetProp$m_iClip1,$$=@e@m_hMyWeapons@!activator.m_iClip1 + 1,0,-1" } } Natascha_Spawn { OnSpawnOutput { Target "filter_rage_activated" Action "FireUser1" Delay 0 } OnParentKilledOutput { Target "!activator" Action "$ResetClientProp$m_bRageDraining" Delay 0.1 } OnParentKilledOutput { Target "!activator" Action "$ResetClientProp$m_flRageMeter" Delay 0.1 } //check when rage was activated by player $filter_sendprop { "targetname" "filter_rage_activated" "$name" "m_bRageDraining" "$value" "1" "$compare" "equal" "Negated" "0" "OnPass" "rage_activated,Trigger,,0,-1" //"OnPass" "player,$DisplayTextChat,activated,0,-1" "OnUser1" "!self,TestActivator,,0,-1" "OnUser1" "!self,FireUser1,,0.1,-1" } logic_relay { "targetname" "rage_activated" "spawnflags" "2" "OnTrigger" "!activator,$SetClientProp$m_bRageDraining,1,0,-1" "OnTrigger" "!activator,$SetProp$m_bRageDraining,0,0,-1" "OnTrigger" "!activator,$AddCond,11,0,-1" "OnTrigger" "rage_meter,SetValueNoFire,$$=!activator.m_flRageMeter,0,-1" "OnTrigger" "rage_meter_drain,FireUser1,,0.01,-1" } logic_relay { "targetname" "rage_meter_drain" "spawnflags" "2" "OnUser1" "rage_meter,FireUser1,,0,-1" "OnUser1" "!self,FireUser1,,0.1,-1" //interval } math_counter { "targetname" "rage_meter" "startvalue" "0" "min" "0" "max" "100" "OnHitMin" "rage_meter_drain,$CancelPending,,0,0" "OnHitMin" "!activator,$RemoveCond,11,0,-1" "OnHitMin" "!activator,$SetClientProp$m_bRageDraining,0,0,-1" "OnHitMin" "!activator,$ResetClientProp$m_flRageMeter,,0.03,-1" "OnHitMin" "!activator,$SetProp$m_flRageMeter,0,0,-1" //"OnHitMin" "player,$DisplayTextChat,rage meter ended,0,-1" "OnGetValue" "rage_meter,$SetVar$tempRageHolder,,0,-1" "OnGetValue" "!activator,$SetClientProp$m_flRageMeter,$$=rage_meter.tempRageHolder,0.01,-1" "OnUser1" "!self,Subtract,1,0,-1" //drain per interval "OnUser1" "!self,GetValue,,0.01,-1" } } Thunderdome_Spawn { OnSpawnOutput { Target "!activator" Action "$AddItemAttribute" Param "CARD: damage bonus|1.25|1" Delay 0 } OnSpawnOutput { Target "!activator" Action "$AddItemAttribute" Param "CARD: damage bonus|1.25|2" Delay 0 } OnParentKilledOutput { Target "!activator" Action "$RemoveItemAttribute" Param "CARD: damage bonus|1" Delay 0 } OnParentKilledOutput { Target "!activator" Action "$RemoveItemAttribute" Param "CARD: damage bonus|2" Delay 0 } // OnSpawnOutput // { // Target "@e@m_hMyWeapons@!activator" // Action "$SetProp$m_iClip1" // Param "0" // Delay 0 // } //very weird hack to prevent switching to weapon // OnSpawnOutput // { // Target "@e@m_hMyWeapons@!activator" // Action "$SetProp$m_bFlipViewModel" // Param "0" // Delay 0.01 // } OnSpawnOutput { Target "!activator" Action "$WeaponSwitchSlot" Param "1" Delay 0 } OnSpawnOutput { Target "shield_hitbox" Action "$SetOwner" Param "!activator" } OnSpawnOutput { Target "shield_hitbox2" Action "$SetOwner" Param "!activator" } OnSpawnOutput { Target "projectile_shield" Action "$SetModel" Param "models/props_mvm/mvm_comically_small_player_shield.mdl" } OnSpawnOutput { Target "rotate" Action "Start" } OnSpawnOutput { Target "rotate2" Action "Start" } OnSpawnOutput { Target "rotate" Action "SetParent" Param "" } OnSpawnOutput { Target "rotate2" Action "SetParent" Param "" } OnSpawnOutput { Target "rotate_position" Action "Trigger" } filter_activator_tfteam { "targetname" "filter_is_blue" "Negated" "0" "TeamNum" "3" } logic_relay { "targetname" "rotate_position" "spawnflags" "2" "OnTrigger" "rotate,$TeleportToEntity,!activator,0,-1" "OnTrigger" "rotate2,$TeleportToEntity,!activator,0,-1" "OnTrigger" "!self,Trigger,,0.01,-1" } trigger_hurt { "parentname" "rotate" "origin" "100 0 1" "mins" "-12 -53 -51.5" "maxs" "12 53 51.5" "targetname" "shield_hitbox" "spawnflags" "1" "filtername" "filter_is_blue" "Damage" "60" //damage is half of this "damagetype" "512" } entity_medigun_shield { "parentname" "rotate" "targetname" "projectile_shield" "origin" "100 0 0" "spawnflags" "1" "teamnum" "2" } func_rotating { "targetname" "rotate" "origin" "0 0 0" "mins" "-0.1 -0.1 -0.1" "maxs" "0.1 0.1 0.1" "dmg" "0" "fanfriction" "100" "maxspeed" "60" "spawnflags" "64" "volume" "0" } //2nd shield trigger_hurt { "parentname" "rotate2" "mins" "-12 -53 -51.5" "maxs" "12 53 51.5" "origin" "-100 0 1" // "angles" "180 0 0" "targetname" "shield_hitbox2" "spawnflags" "1" "filtername" "filter_is_blue" "Damage" "60" //damage is half of this "damagetype" "512" } entity_medigun_shield { "parentname" "rotate2" "targetname" "projectile_shield" "origin" "-100 0 0" "angles" "-180 0 -180" "spawnflags" "1" "teamnum" "2" } func_rotating { "targetname" "rotate2" "origin" "0 0 0" "mins" "-0.1 -0.1 -0.1" "maxs" "0.1 0.1 0.1" "dmg" "0" "fanfriction" "100" "maxspeed" "60" "spawnflags" "64" "volume" "0" } } Building_Level2_Spawn { OnSpawnOutput { Target constructed_check_loop Action Trigger Delay 0.1 } $filter_sendprop { "targetname" "filter_constructed" "$name" "m_flPercentageConstructed" "$value" "1" "$compare" "greater than or equal" "Negated" "0" "OnPass" "apply_level2,Trigger,,0,-1" } //if building was built in setup or player used building canteen, cancel $filter_sendprop { "targetname" "filter_is_already_constructed" "$name" "m_iHighestUpgradeLevel" "$value" "2" "$compare" "greater than or equal" "Negated" "0" "OnPass" "constructed_check_loop,Disable,,0,-1" } logic_relay { "targetname" "constructed_check_loop" "spawnflags" "2" "OnTrigger" "filter_constructed,TestActivator,,0,-1" "OnTrigger" "filter_is_already_constructed,TestActivator,,0,-1" "OnTrigger" "!self,Trigger,,0.1,-1" } logic_relay { "targetname" "apply_level2" "spawnflags" "2" "OnTrigger" "!activator,$SetProp$m_iHighestUpgradeLevel,2,0,-1" "OnTrigger" "constructed_check_loop,Disable,,0,-1" } } Vitasaw_Rework_Spawn { OnSpawnOutput { Target "vita_relay" Action "Trigger" } logic_relay { "targetname" "vita_relay" "spawnflags" "2" "OnTrigger" "filter_has_enough_organs,TestActivator,,0,-1" "OnTrigger" "!self,Trigger,,0.2,-1" } $filter_sendprop { "targetname" "filter_has_enough_organs" "$name" "m_iDecapitations" "$value" "3" "$compare" "greater than or equal" "Negated" "0" "OnPass" "!activator,$AddItemAttribute,allow friendly fire|1|2,0,-1" "OnFail" "!activator,$RemoveItemAttribute,allow friendly fire|2,0,-1" } } Vitsaw_Rework_Global { NoFixup 1 logic_relay { "targetname" "_vita_duration" "spawnflags" "2" "OnTrigger" "!activator,$RemoveCond,16,5,-1" "OnTrigger" "!activator,$RemoveCond,29,5,-1" "OnTrigger" "!activator,$RemoveCond,26,5,-1" } filter_activator_tfteam { "targetname" "vitasaw_team_check" "TeamNum" "2"//red "OnPass" "vitasaw_caller,$SetProp$m_iDecapitations,$$=vitasaw_caller.m_iDecapitations - 3,0.01,-1" "OnPass" "vitasaw_caller,AddOutput,targetname ,0.011,-1" "OnPass" "!activator,$AddCond,16,0,-1" "OnPass" "!activator,$AddCond,29,0,-1" "OnPass" "!activator,$AddCond,26,0,-1" "OnPass" "!activator,$CancelPending,,0,-1" "OnPass" "!activator,$RemoveOutput,OnUser4,0,-1" "OnPass" "!activator,AddOutput,OnUser4 !self:$RemoveCond:16:5:-1,0.01,-1" "OnPass" "!activator,AddOutput,OnUser4 !self:$RemoveCond:29:5:-1,0.01,-1" "OnPass" "!activator,AddOutput,OnUser4 !self:$RemoveCond:26:5:-1,0.01,-1" "OnPass" "!activator,AddOutput,OnUser4 !self:$RemoveOutput:OnUser4:5.1:-1,0.01,-1" "OnPass" "!activator,FireUser4,,0.02,-1" } } } ExtraSpawnPoint { Name "red" TeamNum 3 X "2408.000000" Y "-96.000000" Z "267.031311" } SpawnTemplate DirectHit_Rework_Global SpawnTemplate Vitsaw_Rework_Global CustomWeapon { "DNA Rejuvenator" { OriginalItemName "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "special item description" "Invasively resurrects a Zombie" "special item description 2" "Target dies after 5 seconds" "maxammo primary reduced" 0.2 "clip size penalty" 0.5 "fire rate penalty" 3 "damage penalty" 0.1 "fire input on hit" "popscript^$rejuvenatorHit^" "paintkit_proto_def_index" 296 "set_item_texture_wear" 0 "cannot upgrade" 1 "special damage type" 1 "penetrate teammates" 1 } "Thunderdome" //name suggested by yuugi { OriginalItemName "Upgradeable TF_WEAPON_MINIGUN" "hidden primary max ammo bonus" 0.0001 "cannot upgrade" 1 "special item description" "Create 2 small projectile shields that orbit around you and damage enemies" "special item description 2" "Increased damage for secondary and melee" "special item description 3" "No primary weapon" } "Rider On The Storm" { OriginalItemName "Activated Campaign 3 Pass" "increased air control" 3 "dmg from ranged reduced" 0.9 // "dmg taken from bullets reduced" 0.9 // "dmg taken from blast reduced" 0.9 // "dmg taken from fire reduced" 0.9 "damage force increase" 2 "cancel falling damage" 1 "custom item model" "models/player/items/all_class/spacechem_pin.mdl" } "Freelance Mercenary" { OriginalItemName "Halloween Spellbook" "special item description" "Hold the Action key to switch between classes on the fly" } } ExtraLoadoutItems { Scout { Action {Item "Rider On The Storm" Cost 10} } Heavyweapons { Primary {Item "Thunderdome"} } Medic { Primary {Item "DNA Rejuvenator"} } Spy { Action {Item "Rider On The Storm" Cost 10} } Action {Item "Freelance Mercenary" Cost 300} } PlayerItemEquipSpawnTemplate { Name FreelanceMercenary_Logic ItemName "Freelance Mercenary" } PlayerItemEquipSpawnTemplate { Name BabyFace_Spawn ItemName "Baby Face's Blaster" } ItemAttributes { ItemName "Baby Face's Blaster" "special item description" "Initial Scout: Gain increase to reload and fire rate while at full boost" } PlayerItemEquipSpawnTemplate { Name DirectHit_Spawn ItemName "The Direct Hit" } ItemAttributes { ItemName "The Direct Hit" "fire input on hit" "direct_hit_on_hit^Trigger^" "clip size penalty" 0.25 "special item description" "On Hit: Instantly reload one rocket" } PlayerItemEquipSpawnTemplate { Name Natascha_Spawn ItemName "Natascha" } PlayerItemEquipSpawnTemplate { Name Thunderdome_Spawn ItemName "Thunderdome" } ItemAttributes { ItemName "Natascha" "increase buff duration HIDDEN" 50 //"generate rage on damage" 3 "special item description" "Replaces 'Knockback Rage' with Power Rage. grant crit while active (PLACEHOLDER EFFECT)" } ItemAttributes { ClassName TF_WEAPON_PDA_ENGINEER_BUILD "special item description" "Buildings start at level 2 after construction" } BuildingSpawnTemplate { Name Building_Level2_Spawn BuildingType "Sentry" } BuildingSpawnTemplate { Name Building_Level2_Spawn BuildingType "Dispenser" } BuildingSpawnTemplate { Name Building_Level2_Spawn BuildingType "Teleporter Entry" } BuildingSpawnTemplate { Name Building_Level2_Spawn BuildingType "Teleporter Exit" } PlayerItemEquipSpawnTemplate { Name Vitasaw_Rework_Spawn ItemName "The Vita-Saw" } ItemAttributes { ItemName "The Vita-Saw" "fire input on hit" "popscript^$vitasawOnHit^vitasaw_team_check" "damage penalty" 0.09 "max health additive penalty" 0 "special item description" "On Hit Teammate: Exchange 3 organs to give target every banner effects for 5 seconds" } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } // WaveSpawn // { // Where spawnbot // TotalCount 1 // MaxActive 1 // SpawnCount 1 // WaitBetweenSpawns 0 // WaitBeforeStarting 0 // TotalCurrency 0 // TFBot // { // SpawnTemplate "Tank_Carrier_Base" // Class Medic // Health 1 // WeaponRestrictions PrimaryOnly // Attributes MiniBoss // CharacterAttributes // { // "move speed bonus" 2 // "damage force reduction" 0.7 // "airblast vulnerability multiplier" 0.7 // "override footstep sound set" 5 // } // } // } WaveSpawn { Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBetweenSpawns 0 WaitBeforeStarting 0.1 TotalCurrency 0 Tank { Health 1000 Speed 0 Name "tankboss" StartingPathTrackNode "path_tank_a" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Where spawnbot TotalCount 50 MaxActive 5 SpawnCount 5 WaitBetweenSpawns 0 WaitBeforeStarting 0 TotalCurrency 0 TFBot { Class heavyballsacks Action Mobber CharacterAttributes { "no_attack" 1 } } } WaveSpawn { Where red TotalCount 50 MaxActive 2 SpawnCount 2 WaitBetweenSpawns 0 WaitBeforeStarting 0 TotalCurrency 0 TFBot { Class heavyballsacks Action Mobber CharacterAttributes { "no_attack" 1 } AddCond {Index 43} } } WaveSpawn { Where spawnbot TotalCount 50 MaxActive 2 SpawnCount 2 WaitBetweenSpawns 0 WaitBeforeStarting 0 TotalCurrency 0 TFBot { Attributes MiniBoss Health 3000 Class heavyballsacks Action Mobber CharacterAttributes { "no_attack" 1 } } } } Wave { StartWaveOutput { Target wave_start_relay Action Trigger } DoneOutput { Target wave_finished_relay Action Trigger } WaveSpawn { Where spawnbot TotalCount 1 MaxActive 1 SpawnCount 1 WaitBetweenSpawns 0 WaitBeforeStarting 0.1 TotalCurrency 0 Tank { Health 1000 Speed 0 Name "tankboss" StartingPathTrackNode "path_tank_a" OnKilledOutput { Target boss_dead_relay Action Trigger } OnBombDroppedOutput { Target boss_deploy_relay Action Trigger } } } WaveSpawn { Where spawnbot TotalCount 50 MaxActive 3 SpawnCount 3 WaitBetweenSpawns 0 WaitBeforeStarting 0 TotalCurrency 0 TFBot { Class soldier Action Mobber // CharacterAttributes // { // "no_attack" 1 // } } } WaveSpawn { Where red TotalCount 50 MaxActive 2 SpawnCount 2 WaitBetweenSpawns 0 WaitBeforeStarting 0 TotalCurrency 0 TFBot { Class heavyballsacks Action Mobber CharacterAttributes { "no_attack" 1 } AddCond {Index 43} } } } }