////////////////////////////////////////////////// //Map: Berserker // //Mission: Testing Grounds // //Author: Yakibomb // //Started: November 21, 2021 // ////////////////////////////////////////////////// #base robot_berserker_test.pop #base yaki_berserker_initialize_logic.pop #base yaki_berserker_test_monster_stats.pop WaveSchedule { WaveStartCountdown 1 TextPrintTime 0 ForceHoliday 2 MaxActiveSkeletons 999 NoSkeletonSplit 1 NoThrillerTaunt 1 NoCritPumpkin 1 // NoJoinMidwave 1 NoRomevisionCosmetics 1 NoHolidayPickups 1 BotsAreHumans 2 StandableHeads 1 FixHuntsmanDamageBonus 1 ImprovedAirblast 1 // NoReanimators 1 FixSetCustomModelInput 1 RespecEnabled 0 RemoveGrapplingHooks 1.5 BonusRatioHalf 1.1 BonusRatioFull 1.1 NoMissionInfo 0 // BotPushaway 0 StuckTimeMultiplier 5 BodyPartScaleSpeed 10 DisableSound "Announcer.MVM_Bonus" DisableSound "Announcer.MVM_Wave_End" DisableSound "Announcer.MVM_Final_Wave_Start" DisableSound "Announcer.MVM_Final_Wave_End" DisableSound "Announcer.MVM_Get_To_Upgrade" //Brass Beast DisableSound "Weapon_Gatling.Fire" DisableSound "Weapon_Gatling.FireCrit" DisableSound "Weapon_Gatling.WindUp" DisableSound "Weapon_Gatling.WindDown" DisableSound "Weapon_Gatling.ClipEmpty" DisableSound "MVM.GiantCommonExplodes" //Giant explosion no more. PrecacheSound "music/SSBM_Adventure_Intro.wav" OverrideParticles { "bot_radio_waves" "hightower_explosion" } OverrideSounds { "Announcer.MVM_First_Wave_Start" "music/SSBM_Adventure_Intro.wav" "Announcer.MVM_Wave_Start" "music/SSBM_Adventure_Intro.wav" //Soldier Booze Banner "Weapon_BattalionsBackup.HornRed" "Scout.DodgeCanDrink" //Sentrygun "Building_Sentrygun.Fire" "Weapon_CrusadersCrossbow.Single" //Ball O' Bats and Healing Aura VO's reversed here "scout_sf13_spell_uber01" "scout_sf13_spell_generic04" "scout_sf13_spell_generic04" "scout_sf13_spell_uber01" "soldier_sf13_spell_uber01" "soldier_sf13_spell_generic04" "soldier_sf13_spell_generic04" "soldier_sf13_spell_uber01" "pyro_sf13_spell_uber01" "pyro_sf13_spell_generic04" "pyro_sf13_spell_generic04" "pyro_sf13_spell_uber01" "demoman_sf13_spell_uber01" "demoman_sf13_spell_generic04" "demoman_sf13_spell_generic04" "demoman_sf13_spell_uber01" "heavy_sf13_spell_uber01" "heavy_sf13_spell_generic04" "heavy_sf13_spell_generic04" "heavy_sf13_spell_uber01" "engineer_sf13_spell_uber01" "engineer_sf13_spell_generic04" "engineer_sf13_spell_generic04" "engineer_sf13_spell_uber01" "medic_sf13_spell_uber01" "medic_sf13_spell_generic04" "medic_sf13_spell_generic04" "medic_sf13_spell_uber01" "sniper_sf13_spell_uber01" "sniper_sf13_spell_generic04" "sniper_sf13_spell_generic04" "sniper_sf13_spell_uber01" "spy_sf13_spell_uber01" "spy_sf13_spell_generic04" "spy_sf13_spell_generic04" "spy_sf13_spell_uber01" } //All PrecacheModel "models/player/items/all_class/mvm_bombinomicon.mdl" //Scout PrecacheModel "models/weapons/w_models/w_guitar_scout/w_guitar_scout.mdl" PrecacheSound "weapons/guitar_strum.wav" PrecacheSound "weapons/guitar_impact2.wav" //Soldier PrecacheModel "models/weapons/c_models/c_soldier_sword_shield/c_soldier_sword_shield.mdl" PrecacheModel "models/weapons/c_models/c_soldier_booze_banner/c_soldier_booze_banner.mdl" //Pyro PrecacheModel "models/weapons/w_models/w_pitchfork_pyro/w_pitchfork_pyro.mdl" //Engineer PrecacheModel "models/weapons/w_models/w_masher_engineer/w_masher_engineer.mdl" PrecacheModel "models/weapons/c_models/c_rocketpack_engineer/c_rocketpack_engineer.mdl" //Medic PrecacheModel "models/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow.mdl" PrecacheModel "models/weapons/w_models/w_medigun_healing_staff/w_medigun_healing_staff_tf2.mdl" //Heavy PrecacheModel "models/weapons/c_models/c_russian_resolve_heavy/c_russian_resolve_heavy.mdl" //Spy PrecacheModel "models/weapons/c_models/c_soldier_sword_noshield/c_soldier_sword_noshield.mdl" ItemWhitelist { Allowed "saxxy" Allowed "tf_weapon_lunchbox_drink" // Allowed "tf_weapon_jar_milk" // Allowed "tf_weapon_cleaver" Allowed "tf_weapon_bat" Allowed "tf_weapon_bat_wood" Allowed "tf_weapon_bat_fish" Allowed "tf_weapon_bat_giftwrap" // Allowed "tf_weapon_buff_item" // Allowed "tf_weapon_parachute" Allowed "tf_weapon_shovel" Allowed "tf_weapon_katana" Allowed "tf_weapon_fireaxe" Allowed "tf_weapon_breakable_sign" Allowed "tf_weapon_slap" // Allowed "tf_weapon_jar_gas" // Allowed "tf_weapon_flaregun" // Allowed "tf_weapon_flaregun_revenge" // Allowed "tf_weapon_rocketpack" // Allowed "tf_weapon_cannon" Allowed "tf_wearable_demoshield" Allowed "tf_weapon_bottle" Allowed "tf_weapon_sword" Allowed "tf_weapon_stickbomb" Allowed "tf_weapon_lunchbox" Allowed "tf_weapon_fists" Allowed "tf_weapon_wrench" Allowed "tf_weapon_robot_arm" // Allowed "tf_weapon_shotgun_building_rescue" // Allowed "tf_weapon_mechanical_arm" // Allowed "tf_weapon_laser_pointer" Allowed "tf_weapon_pda_engineer_build" Allowed "tf_weapon_pda_engineer_destroy" Allowed "tf_weapon_builder" Allowed "tf_weapon_crossbow" Allowed "tf_weapon_bonesaw" // Allowed "tf_weapon_compound_bow" // Allowed "tf_weapon_jar" Allowed "tf_weapon_club" Allowed "tf_weapon_knife" Allowed "tf_weapon_pda_spy" Allowed "tf_weapon_invis" // Allowed "tf_wearable" // Allowed "tf_powerup_bottle" // Allowed "tf_weapon_spellbook" Allowed "no_entity" //taunts } ItemBlacklist { Classname "tf_wearable" Classname "tf_powerup_bottle" // DefIndex 735 //Sapper // DefIndex 736 //Sapper // DefIndex 810 //Sapper // DefIndex 831 //Sapper // DefIndex 933 //Sapper // DefIndex 1080 //Sapper // DefIndex 1102 //Sapper } SpawnTemplate { Name "template_spawnpoint" Origin "5181 7392 2322" } SpawnTemplate { Name "initialize_logic" Origin "-255 333 1900" //debug room location } SpawnTemplate { Name "intialize_drop_system" Origin "-255 333 1900" //debug room location } PlayerSpawnTemplate { Name "player_attributes_onspawn" } PlayerSpawnOnceTemplate { Name "player_attributes_onspawn_once" } StartingCurrency 30000 RespawnWaveTime 1 CanBotsAttackWhileInSpawnRoom Yes FixedRespawnWaveTime Yes // CustomUpgradesFile "mvm_upgrades_medieval_yakibomb_20181025.txt" //STAGE 1 /////////////////////////////////////////////////////////////////////////////////////////////////////// Wave { // RedTeamWipeCausesWaveLoss 1 CustomWaveNumber 1 CustomMaxWaveNumber 0 Explanation { Line "{blue}Testing new Berserker version for Halloween MvM event." Line "{red}Have a nice day." } InitWaveOutput { Target wave_init_relay_s1 Action Trigger } StartWaveOutput { Target wave_start_relay //Universal. The only important one is the InitWaveOutput. Action Trigger } DoneOutput { Target wave_finished_relay //Universal. The only important one is the InitWaveOutput. Action Trigger } //Example // WaveSpawn // { // Name "dummy1" // // StartWaveOutput // { // Target setup_sXaY_dummy // Action Trigger // } // WaitBeforeStarting 3 // FirstSpawnOutput // { // Target event_sXaY_dummy // Action Enable // } // DoneOutput // { // Target setup_sXaY_dummy // Action Trigger // } // } WaveSpawn { StartWaveOutput { Target event_s1_boss_portal Action Trigger } Name "s1_bomb" Where spawnbot_bomb WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 0 TFBot { Class Heavyweapons Skill Easy Health 5 Scale 1.01 ClassIcon enemy Attributes SuppressFire CharacterAttributes { "active health degen" -1 "no_jump" 1 } } } WaveSpawn { WaitForAllSpawned "s1_bomb" Name "s1_test_vortex_horde1" Where spawnbot_vortex TotalCount 111 MaxActive 26 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0.1 TotalCurrency 0 Support 1 RandomChoice { TFBot { SpawnTemplate "robot_vortex_target" Template monster_skeleton } TFBot { SpawnTemplate "robot_vortex_target" Template monster_skeleton_armor_sword } TFBot { SpawnTemplate "robot_vortex_target" Template monster_bighead_mannvich } } } WaveSpawn { WaitForAllSpawned "s1_bomb" Name "s1_test_vortex_horde2" Where spawnbot_vortex_boss TotalCount 10 MaxActive 3 SpawnCount 1 WaitBeforeStarting 0 WaitBetweenSpawns 0.1 TotalCurrency 0 TFBot { SpawnTemplate "robot_vortex_boss_target" Template boss_bighead_mannvich } } } /////// STAGE 2 /////////////////////////////////////// Wave { CustomWaveNumber 2 CustomMaxWaveNumber 0 WaveSpawn { WaitBeforeStarting 5 } WaveSpawn { Name "s1_bomb" Where spawnbot_bomb WaitBeforeStarting 0 WaitBetweenSpawns 0 TotalCurrency 0 TFBot { Class Heavyweapons Skill Easy Health 3 Scale 1.01 ClassIcon enemy Attributes SuppressFire CharacterAttributes { "active health degen" -1 "no_jump" 1 } } } WaveSpawn { DoneOutput { Target event_s1_boss_portal Action Trigger } WaitForAllSpawned "s1_bomb" Where spawnbot_s1 TotalCount 1 MaxActive 1 SpawnCount 1 WaitBeforeStarting 2 WaitBetweenSpawns 0 TotalCurrency 11111 TFBot { SpawnTemplate "robot_vortex_target" Template boss_bighead_mannvich } } } Wave { CustomWaveNumber 3 CustomMaxWaveNumber 0 WaveSpawn { WaitBeforeStarting 5 } } PlayerItemEquipSpawnTemplate { Name "equip_dispenser_backpack" ItemName "Dispenser Backpack" Origin "0 0 0" Bone "bip_spine_2" } PlayerItemEquipSpawnTemplate { Name "equip_dispenser_ghost" ItemName "Dispenser Ghost" Origin "15 -38 15" Bone "bip_pelvis" } PlayerItemEquipSpawnTemplate { Name equip_medieval_attributes ItemName "Medieval Attributes" } PlayerItemEquipSpawnTemplate { Name equip_item_bag ItemName "Magic Item Bag" } PlayerItemEquipSpawnTemplate { Name "equip_soldier_sword_shield" ItemName "The Soldier's Sword" } PlayerItemEquipSpawnTemplate { Name "equip_booze_banner" ItemName "The Booze Banner" } PlayerItemEquipSpawnTemplate { Name "equip_battle_booster" ItemName "The Battle Booster" } PlayerItemEquipSpawnTemplate { Name "equip_fireball" ItemName "The Fi'o'ball" } PlayerItemEquipSpawnTemplate { Name equip_eyelander ItemName "The Infinity Eyelander" } PlayerItemEquipSpawnTemplate { Name "equip_russian_resolve" ItemName "The Russian Resolve" } PlayerItemEquipSpawnTemplate { Name "equip_heavy_rage" ItemName "The Rage Mechanic" } PlayerItemEquipSpawnTemplate { Name "equip_healing_beam" Origin "0 0 150" ItemName "The Healing Beam" } PlayerItemEquipSpawnTemplate { Name "equip_medieval_masher" ItemName "The Medieval Masher" } PlayerItemEquipSpawnTemplate { Name "equip_engineer_thermal_thruster" ItemName "The Airborne Accelerator" } PlayerItemEquipSpawnTemplate { Name GiveItem_Airborne_Accelerator ItemName "GiveItem The Airborne Accelerator" } PlayerItemEquipSpawnTemplate { Name "equip_engineer_crossbow" ItemName "The Creator's Crossbow" } PlayerShootTemplate { Name shoot_engineer_clay_pigeon Speed 1500 Offset "-3 0 0" Angles "0 0 0" OverrideShoot 1 ItemName "The Clay Pigeon" } PlayerItemEquipSpawnTemplate { Name "equip_harmony_of_repair" ItemName "The Harmony of Repair" } PlayerItemEquipSpawnTemplate { Name "equip_bowmagic" ItemName "The Magic Bow" } PlayerShootTemplate { Name shoot_bowmagic AttachToProjectile 1 ItemName "The Magic Bow" } PlayerShootTemplate { Name shoot_jarate_zombie Speed 1500 Offset "-3 0 40" Angles "0 0 0" OverrideShoot 1 ItemName "Zombie Jarate" } PlayerShootTemplate { Name shoot_sniper_boomerang Speed 100 Offset "-3 0 0" Angles "0 0 0" OverrideShoot 1 ItemName "The Kickback Kangaroo" } PlayerItemEquipSpawnTemplate { Name equip_spellbook_basic ItemName "Magic Spellbook" } PlayerShootTemplate { Name shoot_spellbook_basic ItemName "Magic Spellbook" } PlayerItemEquipSpawnTemplate { Name equip_spellbook_invictus1 ItemName "Spellbook INVICTUS1" } PlayerShootTemplate { Name shoot_spellbook_invictus1 ItemName "Spellbook INVICTUS1" } PlayerShootTemplate { Name shoot_spellbook_firebrand ItemName "Spellbook CREPITUS" } PlayerItemEquipSpawnTemplate { Name equip_spellbook_bombinomicon ItemName "Spellbook BOMBINOMICON" } PlayerItemEquipSpawnTemplate { Name equip_head_alakablamicon ItemName "Alakablamicon" } PlayerItemEquipSpawnTemplate { Name equip_advanced_apollo ItemName "The Advanced Apollo" } PlayerShootTemplate //credit seelpit { Name shoot_fireball Speed 1500 Offset "-3 0 0" Angles "0 0 0" OverrideShoot 1 ItemName "The Fi'o'ball" } //PlayerShootTemplate //{ // Name shoot_starstunner // Speed 1500 // Offset "0 30 0" // Angles "0 30 0" // OverrideShoot 1 // ItemName "The Star-Seeing Stunner" //} ////////////////////////// // Weapons and items // //////////////////////// PlayerAttributes { // "not solid to players" 1 // "health regen" 1 // "teleport instead of die" 1 // "drop health pack on kill" 1 // "health from packs decreased" 0.5 // "mult dmg friendly fire" 0 // "not solid to players" 1 // HeavyWeapons // { // "model scale" 1.2 // "hidden maxhealth non buffed" 100 // "mult stun resistance" 0.5 // "generate rage on damage" 3 // "increase buff duration HIDDEN" 3 // } // Medic // { // "health drain" -4 // } } PlayerAddCond { // Index 114 //See players through walls // Index 76 //Ghost on death } //////////////// // Spellbooks // //////////////// CustomWeapon { "Spellbook INVICTUS1" //heal book { OriginalItemName "Halloween Spellbook" "special item description" "Heal your allies better with this book!" "damage causes airblast" 1 } "Spellbook CREPITUS1" //damage book { OriginalItemName "Halloween Spellbook" "special item description" "Destroy your enemies better with this book!" "damage causes airblast" 1 // "override projectile type" 2 } "Spellbook FULUMENUS1" //speed book { OriginalItemName "Halloween Spellbook" "special item description" "Become fast as lightning itself with this book!" "damage causes airblast" 1 // "override projectile type" 2 } "Spellbook BOMBINOMICON" // BOMBS. SO MANY BOMBS. { OriginalItemName "Basic Spellbook" "custom item model" "models/player/items/all_class/mvm_bombinomicon.mdl" "special item description" "Deal with the devil in this fantastic Issue #1!" "damage causes airblast" 1 "override projectile type" 17 // "custom projectile model" "models/props_lakeside_event/bomb_temp.mdl" "damage bonus HIDDEN" 10 "mult projectile scale" 1.4 "mult projectile count" 4 "projectile spread angle penalty" 5 "grenade explode on impact" 1 } ///////////////// // Quest Items // ///////////////// "Magic Item Bag" { OriginalItemName "CheatDetectedHonesty" "special item description" "Keeps 5 items cozy!" "special item description 2" "-> Press Taunt key to open your bag." "is australium item" "100" //starting magic } "Medieval Attributes" { OriginalItemName "Damaged Capacitor" "health from packs decreased" 0.5 } "Magic Spellbook" { OriginalItemName "Basic Spellbook" // "special item description" "Upgrade your damn spellbook" "damage causes airblast" 1 "special damage type" 1 // "single wep deploy time decreased" 2.8 "switch from wep deploy time decreased" 0.25 // "force weapon switch" 1 "cannot be upgraded" 1 } ///////////////// // Class Items // ///////////////// "The Star-Seeing Stunner" { OriginalItemName "Mad Milk" "effect cond override" 73 "damage causes airblast" 1 } "The Bonkalele Throwable" { OriginalItemName "The Flying Guillotine" "custom item model" "models/weapons/w_models/w_guitar_scout/w_guitar_scout.mdl" "custom projectile model" "models/weapons/w_models/w_guitar_scout/w_guitar_scout.mdl" "custom hit sound" "weapons/guitar_impact2.wav" "effect cond override" 43 "damage causes airblast" 1 } "The Bonkalele" { OriginalItemName "The Atomizer" "custom item model" "models/weapons/w_models/w_guitar_scout/w_guitar_scout.mdl" "custom kill icon" "taunt_guitar_kill" // "air dash count" 1 // "special taunt" 1 "dmg penalty vs players" 1 "custom hit sound" "weapons/guitar_impact2.wav" // "custom impact sound" "weapons/guitar_strum.wav" "damage causes airblast" 1 } "The Heater Shield" { OriginalItemName "TF_WEAPON_ROCKETLAUNCHER" // "custom item model" "models/weapons/w_models/w_shield_heater_soldier/w_shield_heater_soldier.mdl" } "The Booze Banner" { OriginalItemName "The Concheror" // "custom item model" "models/weapons/c_models/c_soldier_booze_banner/c_soldier_booze_banner.mdl" "special item description 3" "Drink to get drunk." "special item description 2" "Passively Regenerates." "special item description" "Cannot buff allies" "mod soldier buff type" 2 //changes banner's flag + buff type "mod soldier buff range" 0 // "increase buff duration HIDDEN" 2 // "add cond when active" 65 //why is this here? } "The Battle Booster" { OriginalItemName "The Buff Banner" "special item description" "Buff provides 100% critical hits" // "mod soldier buff type" 2 //changes banner's flag + buff type // "mod soldier buff range" 0 "increase buff duration" 1 // "add cond when active" 65 //why is this here? } "The Soldier's Sword" { OriginalItemName "Upgradeable TF_WEAPON_SHOVEL" // "custom item model" "models/weapons/c_models/c_soldier_sword_shield/c_soldier_sword_shield.mdl" "custom kill icon" "scout_sword" "mult dmgtaken from melee" 0.8 "damage causes airblast" 1 "is_a_sword" 1 "special taunt" 1 } "The Fi'o'ball" { OriginalItemName "The Gas Passer" // "item_meter_charge_rate" 4 // "item_meter_damage_for_full_charge" 300 // "SPELL: Halloween pumpkin explosions" 1 "item_meter_charge_type" 1 // removing bitmask 0x02 apparently removes recharging meter via damage // "is invisible" 1 "damage causes airblast" 1 } "flameboi" { OriginalItemName "TF_WEAPON_FLAMETHROWER" "mod flamethrower spinup time" 3 "custom minigun spin sound" "Weapon_Minigun.Fire" "hidden primary max ammo bonus" 10 "fire input on hit" "!self^FireUser2^0" "is_passive_weapon" 1 } "EoI Gas Passer" { OriginalItemName "The Gas Passer" "item_meter_charge_rate" 25 "item_meter_damage_for_full_charge" 300 // "item_meter_charge_type" 1 // removing bitmask 0x02 removes recharging meter via damage "damage causes airblast" 1 "explode_on_ignite" 1 "dmg penalty vs players" 0.25 } "The Farmer's Fork" { OriginalItemName "Upgradeable TF_WEAPON_FIREAXE" // "custom item model" "models/weapons/w_models/w_pitchfork_pyro/w_pitchfork_pyro.mdl" "custom kill icon" "back_scratcher" "damage causes airblast" 1 } "The Heraldic Targe" { OriginalItemName "The Chargin' Targe" // "is_passive_weapon" 1 "is invisible" 1 } "targe" { OriginalItemName "The Chargin' Targe" "is_passive_weapon" 1 } "The Infinity Eyelander" { OriginalItemName "The Eyelander" "damage causes airblast" 1 "fire input on kill" "eyelander_decap^Trigger^0" // "melee cleave attack" 1 //breaks func_button } "The Russian Resolve" { OriginalItemName "The Brass Beast" // "custom item model" "models/weapons/c_models/c_russian_resolve_heavy/c_russian_resolve_heavy.mdl" "special item description" "Hold shield up to give allies a boost. Crouch to become immovable." "provide on active" 1 // "uber on damage taken" 0.1 "spunup_damage_resistance" 0 "spunup_push_force_immunity" 0 // "ring of fire while aiming" 1 // "add cond when active" 26 "minigun spinup time increased" 0.5 "minigun no spin sounds" 1 "override projectile type" 9 "cannot taunt" 1 // "no_attack" 1 // "mod max primary clip override" -1 "damage causes airblast" 1 } "The Portable Ballista" { OriginalItemName "tf_weapon_minigun" "minigun spinup time decreased" 0.5 "minigun no spin sounds" 1 "override projectile type" 8 "projectile acceleration" 10000 "projectile acceleration start time" 0 "centerfire projectile" 1 "mult projectile scale" 2 "damage causes airblast" 1 } "The Rage Mechanic" { OriginalItemName "Tomislav" "is invisible" 1 // "custom kill icon" "fists" "generate rage on damage" 2 "alt-fire disabled" 1 "override projectile type" 9 // "maxammo primary reduced" 0 } "The Knuckle Sandvich" { OriginalItemName "Upgradeable TF_WEAPON_FISTS" // "mult dmg vs giants" 2.5 "apply z velocity on damage" -50 "apply look velocity on damage" -50 // "damage causes airblast" 1 // "is_passive_weapon" 1 } "The Medieval Masher" { OriginalItemName "Necro Smasher" // "custom item model" "models/weapons/w_models/w_masher_engineer/w_masher_engineer.mdl" "custom kill icon" "sledgehammer" "damage causes airblast" 1 } "The Airborne Accelerator" { OriginalItemName "The Thermal Thruster" } "GiveItem The Airborne Accelerator" { OriginalItemName "Damaged Capacitor" } "Medieval PDA" { OriginalItemName "Upgradeable TF_WEAPON_PDA_ENGINEER_BUILD" // "build small sentries" 1 // "mult dispenser rate" 2 "building max level" 1 "building scale" 0.8 "engy sentry radius increased" 0.67 "engy sentry damage bonus" 0 // "mult firerocket rate" 1.2 "engy sentry fire rate increased" 1000000 "building cost reduction" 0.7 "build rate bonus" 0.5 } "The Gunslinger" { OriginalItemName "The Gunslinger" "engy disposable sentries" 1 // "max health additive bonus" -11 //fixes overheal on addcond 73 // "hidden maxhealth non buffed" 36 //fixes overheal on addcond 73 } "The Creator's Crossbow" { OriginalItemName "The Rescue Ranger" "override projectile type" 8 "mark for death on building pickup" 0 "maxammo primary reduced" 0.5 "engineer building teleporting pickup" 0 "arrow heals buildings" 0 } "The Harmony of Repair" { OriginalItemName "Necro Smasher" "custom item model" "models/weapons/c_models/c_chainwrench/c_chainwrench.mdl" // "custom kill icon" "sledgehammer" "damage causes airblast" 1 "allowed build types" 1 } "The Clay Pigeon" { OriginalItemName "The Rescue Ranger" "mark for death on building pickup" 0 "maxammo primary reduced" 0.5 "engineer building teleporting pickup" 0 "arrow heals buildings" 0 } "The Wrangler" { OriginalItemName "The Wrangler" "disable wrangler shield" "1" } "The Cleric's Crossbow" { OriginalItemName "The Crusader's Crossbow" "add cond on hit" 27 "add cond on hit duration" 7.5 "special item description" "On Hit: Target is covered with Mad Milk for 8 seconds" "damage causes airblast" 1 } "The Cleric's Crossbow2" { OriginalItemName "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "custom item model" "models/workshop/weapons/c_models/c_crusaders_crossbow/c_crusaders_crossbow.mdl" "special item description" "On Hit: Target is covered with Mad Milk for 8 seconds" "override projectile type" 11 "ubercharge ammo" 1 "add cond on hit" 27 "add cond on hit duration" 7.5 "projectile acceleration" 10000 "projectile acceleration start time" 0 "centerfire projectile" 1 "mult projectile scale" 2 "mod max primary clip override" -1 "mod use metal ammo type" 1 "damage causes airblast" 1 } "The Healing Beam" { //notes //setting teamnum to mediguns change the particles OriginalItemName "Upgradeable TF_WEAPON_MEDIGUN" // "custom item model" "models/weapons/w_models/w_medigun_healing_staff/w_medigun_healing_staff_tf2.mdl" "effect cond override" "5" "enables aoe heal" 1 "special taunt" 1 // "is invisible" 1 // "is_passive_weapon" 1 // "overheal penalty" 0 } "The Heretic's Staff" { OriginalItemName "The Freedom Staff" // "custom item model" "models/weapons/w_models/w_medigun_healing_staff/w_medigun_healing_staff_tf2.mdl" // "special item description" "Taunt to heal allies." "custom kill icon" "freedom_staff" // "enables aoe heal" 1 // "special taunt" 1 // "gesture speed increase" 1.1 "damage causes airblast" 1 // "allow friendly fire" 1 // "add cond on hit" "5" // "add cond on hit duration" "3" } "The Magic Bow" { OriginalItemName "The Huntsman" "custom item model" "models/weapons/c_models/c_fairy_bow/c_fairy_bow.mdl" } "Zombie Jarate" { OriginalItemName "Jarate" } "Jar of Bees" { OriginalItemName "Jarate" } "The Magic Kukri" { OriginalItemName "Upgradeable TF_WEAPON_CLUB" } "The Slingshot" { OriginalItemName "The Huntsman" "custom item model" "models/weapons/c_models/c_slingshot/c_slingshot.mdl" } "The Kickback Kangaroo" { OriginalItemName "Jarate" } "The Brown Recluse" { OriginalItemName "Upgradeable TF_WEAPON_REVOLVER" "special item description" "Fires full clips all at once." "fire full clip at once" 1 "can headshot" 1 "spread penalty" 1.5 "damage causes airblast" 1 "max bullet range" 256 } "The Rogue's Rapier" { OriginalItemName "Upgradeable TF_WEAPON_KNIFE" "custom item model" "models/weapons/c_models/c_soldier_sword_noshield/c_soldier_sword_noshield.mdl" "custom kill icon" "scout_sword" // "damage causes airblast" 1 "damage penalty" 0.615 "mult crit dmg" 2 "crit from behind" 1 } /////////////////// // Custom Equips // /////////////////// //"The Hardy Laurel" //"Honest Halo" //can stack several //"Damaged Capacitor" //can stack several //BODY ENVELOPING //3013 blood aura //3015 purple aura //3016 green aura "test equip" { OriginalItemName "Honest Halo" //WORKS VERY WELL can stack several!! // "custom item model" "models/empty.mdl" //isn't necessary. Use sniper_nohat instead. // "is_passive_weapon" 1 //isn't necessary // "add cond when active" 11 //doesn't work // "damage bonus HIDDEN" 99 //doesn't work } "SPELL Reraise" { OriginalItemName "Honest Halo" "is_passive_weapon" 1 "add cond when active" 32 "attach particle effect" 12 } "SPELL Regen" { OriginalItemName "Damaged Capacitor" "custom item model" "models/player/items/sniper/sniper_nohat.mdl" "attach particle effect" 80 "health regen" 25 } "SPELL Health" { OriginalItemName "Damaged Capacitor" "custom item model" "models/player/items/sniper/sniper_nohat.mdl" "attach particle effect" 79 "max health additive bonus" 100 } "SPELL Speed" { OriginalItemName "Damaged Capacitor" "custom item model" "models/player/items/sniper/sniper_nohat.mdl" "attach particle effect" 78 "move speed bonus" 2 } "SPELL Cool Effect" { OriginalItemName "Damaged Capacitor" "is_passive_weapon" 1 "custom item model" "models/player/items/sniper/sniper_nohat.mdl" "attach particle effect" 3015 "self add cond on hit" 5 "self add cond on hit duration" 5 } "Shield" { OriginalItemName "Damaged Capacitor" "custom item model" "models/weapons/w_models/w_shield_heater_soldier/w_shield_heater_soldier.mdl" } "Basic Armor" { OriginalItemName "Das Metalmeatencasen" "item color rgb" "6901050" "max health additive bonus" "60" } "Mega Armor" { OriginalItemName "Das Metalmeatencasen" "item color rgb" "6901050" "max health additive bonus" "100" } "Dispenser Backpack" { OriginalItemName "Packable Provisions" "special item description" "Heals surrounding allies 10 HP/sec." } "Dispenser Ghost" { OriginalItemName "Soul of 'Spenser's Past" "special item description" "Heals wearer exclusively 5 HP/sec." } "Sandvich Ghost" { OriginalItemName "Ivan The Inedible" "special item description" "Monsters drop medium health packs" } "Alakablamicon" { OriginalItemName "Alakablamicon" "special item description" "Regenerates spells every 10 seconds." // "force distribute currency on death" 1 } "The Advanced Apollo" { OriginalItemName "Wings of Purity" "special item description" "Allows wearer to Air Jump" "special item description 2" "-10 HP on Air Jump" "special item description 3" "+30% greater jump height" "special item description 4" "Cannot take fall damage" // "air dash count" "2" // "cancel falling damage" 1 // "increased jump height" 1.3 } } ForceItem { All { Item "Medieval Attributes" // Item "Magic Spellbook" Item "Magic Item Bag" // Item "TF_WEAPON_GRAPPLINGHOOK" } Scout { // Item "The Star-Seeing Stunner" Item "The Bonkalele Throwable" Item "The Bonkalele" } Soldier { // Item "The Heater Shield" // Item "The Booze Banner" Item "The Battle Booster" Item "The Soldier's Sword" } Pyro { Item "flameboi" Item "The Fi'o'ball" // Item "EoI Gas Passer" Item "The Farmer's Fork" } Demoman { Item "The Heraldic Targe" Item "The Infinity Eyelander" } HeavyWeapons { // Item "The Russian Resolve" // Item "The Portable Ballista" Item "The Rage Mechanic" Item "The Knuckle Sandvich" } Engineer { Item "The Medieval Masher" Item "Medieval PDA" // Item "The Wrangler" Item "GiveItem The Airborne Accelerator" // Item "The Harmony of Repair" // Item "The Clay Pigeon" } Medic { // Item "The Cleric's Crossbow" Item "The Healing Beam" Item "The Heretic's Staff" // Item "The Advanced Apollo" } Sniper { Item "The Magic Bow" // Item "Jar of Bees" Item "The Kickback Kangaroo" Item "The Magic Kukri" } Spy { Item "The Brown Recluse" Item "The Rogue's Rapier" } } ///////////////////////////////// /// Equip Medieval Attributes /// ///////////////////////////////// PointTemplates { equip_medieval_attributes { /// Refreshes weapon models OnSpawnOutput { Target "@c@!activator" Action "AddOutput" Param "OnUser1 rafmod_filter_weapon_setmodel:TestActivator::0:1" } OnSpawnOutput { Target "@c@!activator" Action "$FireUserAsActivator1" Delay 0.1 } OnSpawnOutput { Target "@c@!activator" Action "$SetVar$EntIndex" Param "$$=!activator.EntIndex" } /// Debug: Players respawn instantly on death OnParentKilledOutput { Target "!activator" Action "$ForceRespawnDead" Delay 1 } } equip_item_bag { /////////////////////// /// Magic Bar stuff /// /////////////////////// //Magic Meter trigger OnSpawnOutput { Target "magic_meter_trigger" Action "FireUser1" } filter_multi { "targetname" "magic_filter" } trigger_multiple { "targetname" "magic_meter_trigger" "filtername" "magic_filter" "maxs" "5 5 5" "mins" "-5 -5 -5" "wait" "5" "spawnflags" "0" "OnTrigger" "magic_meter_text,Display,,0,-1" "OnUser1" "magic_filter,$SetKey$filter01,$$='filter_player_'..!activator.EntIndex,0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger magic_meter_text_current_player_'..!activator.EntIndex..':Display::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger magic_meter_text_max_player_'..!activator.EntIndex..':Display::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger magic_meter_text_divider_player_'..!activator.EntIndex..':Display::0:-1',0,1" "OnUser1" "!self,$SetKey$spawnflags,1,0.2,1" } // Magic Meter text OnSpawnOutput { Target "magic_meter_text" Action "FireUser1" Delay 0 } game_text { "targetname" "magic_meter_text" "channel" "2" "color" "255 255 255" "x" "0.1825" "y" "0.855" "holdtime" "5" "message" "¼½¾MAGIC" "OnUser1" "!caller,$SetKey$targetname,$$='magic_meter_text_divider_player_'..!activator.EntIndex,0,1" "OnUser1" "!caller,$SetVar$CostMod,$$=int(attribute(!activator,'loot rarity')),0,1" "OnUser1" "!self,AddOutput,$$='message '..?(!caller.CostMod >= 3,'¼MAGIC',?(!caller.CostMod >= 2,'½MAGIC',?(!caller.CostMod >= 1,'¾MAGIC',' MAGIC'))),0.1,-1" "OnUser1" "!self,AddOutput,$$='x '..?(!caller.CostMod >= 1,0.18,0.1825))),0.1,-1" } game_text //magic current value { "targetname" "magic_meter_text" "channel" "4" "color" "0 200 45" "x" "0.19" "y" "0.82" "holdtime" "5" "message" "CURRENT" "OnUser1" "!caller,$SetKey$targetname,$$='magic_meter_text_current_player_'..!activator.EntIndex,0,1" // flashes red when losing magic "OnUser2" "!self,AddOutput,color 255 0 0,0,-1" "OnUser2" "!self,Display,,0.02,-1" "OnUser2" "!self,AddOutput,color 0 200 45,0.2,-1" "OnUser2" "!self,Display,,0.22,-1" "OnUser2" "!self,AddOutput,color 255 0 0,0.4,-1" "OnUser2" "!self,Display,,0.42,-1" "OnUser2" "!self,AddOutput,color 0 200 45,0.6,-1" "OnUser2" "!self,Display,,0.62,-1" // Updates/displays magic meter text "OnUser3" "!self,AddOutput,$$='message '..int(!activator.mp_Current)..'%',0,-1" "OnUser3" "!self,Display,,0.01,-1" } OnSpawnOutput { Target "magic_meter_compare" Action "FireUser1" } logic_compare { "targetname" "magic_meter_compare" "OnUser1" "!caller,$SetKey$targetname,$$='magic_meter_compare_player_'..!activator.EntIndex,0,1" "OnUser1" "!caller,AddOutput,$$='OnLessThan magic_meter_text_current_player_'..!activator.EntIndex..':FireUser2:0:0:-1',0,1" //needs 0 in param b/c it doesn't work otherwise "OnUser1" "!caller,AddOutput,$$='OnNotEqualTo magic_meter_text_current_player_'..!activator.EntIndex..':FireUser3:0:0:-1',0,1" } OnSpawnOutput { Target "!activator" Action "$GetItemAttribute" Param "Magic Item Bag|is australium item|!activator|$SetVar$mp_Current|" } OnSpawnOutput { Target "!activator" Action "$GetItemAttribute" Param "Magic Item Bag|is australium item|magic_value|$SetKey$max|" } OnSpawnOutput { Target "!activator" Action "$GetItemAttribute" Param "Magic Item Bag|is australium item|magic_value|SetValueNoFire|" } OnSpawnOutput { Target "!activator" Action "$SetVar$bag_RawSpellCost" Param "-1" } OnSpawnOutput { Target "magic_value" Action "Add" Param "0" Delay 0.01 } math_counter { "targetname" "magic_value" "OutValue" "!caller,$SetKey$targetname,$$='magic_meter_math_current_player_'..!activator.EntIndex,0,1" //names magic unique to player to be called by other entities "OutValue" "!caller,Add,0,0,1" //makes sure to update magic after AddOutputs set "min" "0" "max" "999999" "OutValue" "!caller,AddOutput,$$='OutValue player_'..!activator.EntIndex..':$SetVar$mp_Current::0:-1',0,1" "OutValue" "!caller,AddOutput,$$='OutValue player_'..!activator.EntIndex..':$SetVar$mp_Max::0:1',0,1" //fixes dispenser not finding player (!activator) "OutValue" "!caller,AddOutput,$$='OutValue magic_meter_text_current_player_'..!activator.EntIndex..':$SetVar$mp_Current::0:-1',0,1" //Magic updater doesn't need a unique name. Makes it detectable by players as soon as it gets a value so it can update the HUD. "OutValue" "magic_updater,$SetKey$spawnflags,1,0.1,1" "OutValue" "!caller,AddOutput,$$='OutValue magic_meter_compare_player_'..!activator.EntIndex..':SetCompareValue::0.01:-1',0,1" "OutValue" "!caller,AddOutput,$$='OutValue magic_meter_compare_player_'..!activator.EntIndex..':SetValueCompare::0:-1',0,1" //locks you out of casting spell if SP isn't high enough "OutValue" "!caller,AddOutput,$$='OutValue @c@player_'..!activator.EntIndex..':$SetProp$m_iSpellCharges:$$=test(int(!activator.mp_Current >= !activator.bag_CurrentSpellCost),1,0):0.1:-1',0,1" /// Debug // "OutValue" "player,$DisplayTextChat,,0,-1" // "OutValue" "!activator,$GetVar$mp_Current,player|$DisplayTextChat|,0,-1" // "OutValue" "!activator,$GetPlayerAttribute,loot rarity|player|$DisplayTextChat|,0,-1" } $filter_variable { "targetname" "filter_magic_value" "$name" "mp_Current" "$value" "-1" "$compare" "equal" "Negated" "1" } OnSpawnOutput { Target "magic_updater" Action "FireUser1" } trigger_multiple { "targetname" "magic_updater" "filtername" "filter_magic_value" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "0" "wait" "1" "OnTrigger" "!activator,$GetVar$mp_Current,filter_magic_value|$SetKey$$value|,0,-1" // "OnUser1" "!caller,AddOutput,$$='OnTrigger magic_meter_text_max_player_'..!activator.EntIndex..':Display::0.01:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger magic_meter_text_current_player_'..!activator.EntIndex..':FireUser3:0:0:-1',0,1" } ////////////////////// /// Magic Item Bag /// ////////////////////// ///Item Bag Detection OnSpawnOutput { Target "!activator" Action "$SetVar$bag_inMenu" Param "0" } $filter_variable { "targetname" "filter_spellcharges" "$name" "bag_SpellCharges" "$value" "1" "$compare" "equal" "Negated" "1" } trigger_multiple { "targetname" "spell_charge_updater" "filtername" "filter_spellcharges" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.5" "OnTrigger" "!self,FireUser4,,0,-1" "OnUser4" "@c@!activator,$SetProp$m_iSpellCharges,1,0,-1" "OnUser4" "!activator,$SetVar$bag_SpellCharges,1,0,-1" } OnSpawnOutput { Target "filter_item_bag_activate" Action "FireUser1" } filter_multi { "targetname" "filter_item_bag_activate" "filter01" "filter_player_taunt" "filter02" "filter_player_not_at_upgrades_station" "OnUser1" "!caller,$SetKey$filter03,$$='filter_player_'..!activator.EntIndex,0,1" } trigger_multiple { "filtername" "filter_item_bag_activate" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.01" "OnTrigger" "filter_var_bag_inMenu,TestActivator,,0,-1" // debug stuff // "OnTrigger" "!activator,$GetVar$bag_HealingAura,player|$DisplayTextChat|,1,-1" // "OnTrigger" "!activator,$GetPlayerAttribute,non economy|player|$DisplayTextChat|,1,-1" // "OnTrigger" "filter_spellcharges,$GetKey$$value,player|$DisplayTextChat|,1,-1" // "OnTrigger" "@c@!activator,$GetProp$m_iSpellCharges,player|$DisplayTextChat|,1.5,-1" } /// Item Bag Menu OnSpawnOutput { Target "bag" Action "FireUser1" } logic_relay { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_open_relay_player_'..!activator.EntIndex,0,1" //names relay unique to player using it "OnTrigger" "!caller,FireUser2,,0,-1" "OnTrigger" "!caller,FireUser3,,0.1,-1" "OnUser2" "!caller,AddOutput,$$='OnUser3 bag_spell_player_'..!activator.EntIndex..'_slot*:FireUser2::0.25:1',0,-1" "OnUser2" "!caller,AddOutput,$$='OnUser3 bag_menu_player_'..!activator.EntIndex..'_slot*:$Format::0.5:1',0,-1" "OnUser2" "!caller,AddOutput,$$='OnUser3 bag_menu_player_'..!activator.EntIndex..':$DisplayMenu:!activator:0.6:1',0,-1" } logic_case { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_menu_player_'..!activator.EntIndex,0,1" "case16" "USERNAME's Item Bag" "case01" "!" "case02" "!" "case03" "!" "case04" "!" "case05" "!" "OnUser1" "!caller,$SetKey$case16,$$=string(!activator.m_szNetname)..'\'s Item Bag',0,1" "OnUser1" "!caller,AddOutput,$$='OnCase01 bag_spell_player_'..!activator.EntIndex..'_slot01:FireUser3::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnCase02 bag_spell_player_'..!activator.EntIndex..'_slot02:FireUser3::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnCase03 bag_spell_player_'..!activator.EntIndex..'_slot03:FireUser3::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnCase04 bag_spell_player_'..!activator.EntIndex..'_slot04:FireUser3::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnCase05 bag_spell_player_'..!activator.EntIndex..'_slot05:FireUser3::0:-1',0,1" } /// Item Bag Healing Aura logic_case { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_menu_player_'..!activator.EntIndex..'_slot01',0,1" "case16" "%" "case01" "!" "case02" ":" "case03" "Spell Name" "OnUser1" "!caller,AddOutput,$$='ondefault bag_menu_player_'..!activator.EntIndex..':$SetKey$case01::0:-1',0,1" // "OnUser1" "!caller,$Format,,0.1,-1" } logic_branch { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_spell_player_'..!activator.EntIndex..'_slot01',0,1" //names bag item "OnUser1" "!caller,AddOutput,$$='OnFalse bag_menu_player_'..!activator.EntIndex..'_slot01:$SetKey$case16:! :0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrue bag_menu_player_'..!activator.EntIndex..'_slot01:$SetKey$case16:% % %:0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrue bag_menu_player_'..!activator.EntIndex..'_slot01:$SetKey$case01:SPELL:0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrue bag_menu_player_'..!activator.EntIndex..'_slot01:$SetKey$case03:Healing Aura:0:-1',0,1" //spell name "OnUser2" "!caller,SetValueTest,$$=test(attribute(!activator,'non economy') > 0,attribute(!activator,'non economy'),0),0,-1" "OnUser3" "!activator,$SetVar$bag_SpellIndex,$$=test(attribute(!activator,'non economy') > 0,2,-1),0,-1" //'Healing Aura' spell index "OnUser3" "!activator,$SetVar$bag_SpellCharges,1,0,-1" "OnUser3" "@c@!activator,$SetProp$m_iSelectedSpellIndex,$$=!activator.bag_SpellIndex,0.01,-1" //set new spell index "OnUser3" "!activator,$GiveItem,Magic Spellbook,0,-1" //give them the item to use with this "OnUser3" "!activator,$SetVar$bag_RawSpellCost,80,0,-1" //current spell cost "OnUser3" "!activator,$AddItemAttribute,single wep deploy time decreased|2.8|9,0.01,-1" //cast time //client prop sets HUD icons "OnUser3" "@c@!activator,$SetClientProp$m_iSelectedSpellIndex,$$=!activator.bag_SpellIndex,0,-1" "OnUser3" "@c@!activator,$SetClientProp$m_iSpellCharges,1,0.01,-1" ///Mods spell cost based on 'loot rarity' attribute "OnUser3" "!activator,$SetVar$bag_CurrentSpellCost,$$=int(?(!activator.CostMod >= 3,!activator.bag_RawSpellCost / 4,?(!activator.CostMod >= 2,!activator.bag_RawSpellCost / 2 ,?(!activator.CostMod >= 1,!activator.bag_RawSpellCost * 0.75,!activator.bag_RawSpellCost)))),0.01,-1" //locks you out of casting spell if SP isn't high enough "OnUser1" "!caller,AddOutput,$$='OnUser3 @c@player_'..!activator.EntIndex..':$SetProp$m_iSpellCharges:$$=test(int(!activator.mp_Current >= !activator.bag_CurrentSpellCost),1,0):0.02:-1',0,1" } /// Item Bag Blast Jump logic_case { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_menu_player_'..!activator.EntIndex..'_slot02',0,1" "case16" "%" "case01" "!" "case02" ":" "case03" "Spell Name" "OnUser1" "!caller,AddOutput,$$='ondefault bag_menu_player_'..!activator.EntIndex..':$SetKey$case02::0:-1',0,1" //display menu location // "OnUser1" "!caller,$Format,,0.1,-1" } logic_branch { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_spell_player_'..!activator.EntIndex..'_slot02',0,1" //names bag item "OnUser1" "!caller,AddOutput,$$='OnFalse bag_menu_player_'..!activator.EntIndex..'_slot02:$SetKey$case16:! :0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrue bag_menu_player_'..!activator.EntIndex..'_slot02:$SetKey$case16:% % %:0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrue bag_menu_player_'..!activator.EntIndex..'_slot02:$SetKey$case01:SPELL:0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrue bag_menu_player_'..!activator.EntIndex..'_slot02:$SetKey$case03:Blast Jump:0:-1',0,1" //spell name "OnUser2" "!caller,SetValueTest,$$=test(attribute(!activator,'cannot_transmute') > 0,attribute(!activator,'cannot_transmute'),0),0,-1" "OnUser3" "!activator,$SetVar$bag_SpellIndex,$$=test(attribute(!activator,'cannot_transmute') > 0,4,-1),0,-1" //'Super Jump' spell index "OnUser3" "!activator,$SetVar$bag_SpellCharges,1,0,-1" "OnUser3" "@c@!activator,$SetProp$m_iSelectedSpellIndex,$$=!activator.bag_SpellIndex,0.01,-1" //set new spell index "OnUser3" "!activator,$GiveItem,Magic Spellbook,0,-1" //give them the item to use with this "OnUser3" "!activator,$SetVar$bag_RawSpellCost,20,0,-1" //current spell cost "OnUser3" "!activator,$AddItemAttribute,single wep deploy time decreased|2.8|9,0.01,-1" //cast time //client prop sets HUD icons "OnUser3" "@c@!activator,$SetClientProp$m_iSelectedSpellIndex,$$=!activator.bag_SpellIndex,0,-1" "OnUser3" "@c@!activator,$SetClientProp$m_iSpellCharges,1,0.01,-1" ///Mods spell cost based on 'loot rarity' attribute "OnUser3" "!activator,$SetVar$bag_CurrentSpellCost,$$=int(?(!activator.CostMod >= 3,!activator.bag_RawSpellCost / 4,?(!activator.CostMod >= 2,!activator.bag_RawSpellCost / 2 ,?(!activator.CostMod >= 1,!activator.bag_RawSpellCost * 0.75,!activator.bag_RawSpellCost)))),0.01,-1" //locks you out of casting spell if SP isn't high enough "OnUser1" "!caller,AddOutput,$$='OnUser3 @c@player_'..!activator.EntIndex..':$SetProp$m_iSpellCharges:$$=test(int(!activator.mp_Current >= !activator.bag_CurrentSpellCost),1,0):0.02:-1',0,1" } //This var multiplies mana cost depending on values 0-3, subtracting 1/4th for each OnSpawnOutput { Target "!activator" Action "$SetVar$CostMod" Param "$$=int(attribute(!activator,'loot rarity'))" } } equip_spellbook_basic { } shoot_spellbook_basic { OnSpawnOutput { Target "test_magic_meter_subtraction" Action "AddOutput" Param "$$='OnTrigger !activator:$SetVar$bag_SpellCharges:'..int(!activator.bag_SpellCharges - 1)..':0:1'" } OnSpawnOutput { Target "test_magic_meter_subtraction" Action "AddOutput" Param "$$='OnTrigger magic_meter_math_current_player_'..!activator.EntIndex..':Subtract:'..!activator.bag_CurrentSpellCost..':0:1'" } OnSpawnOutput { Target "test_magic_meter_subtraction" Action "Trigger" Delay 0.01 } logic_relay { "targetname" "test_magic_meter_subtraction" "spawnflags" "1" } ///Adds casting animation!! OnSpawnOutput { Target "!activator" Action "$GetItemAttribute" Param "9|single wep deploy time decreased|@c@!activator|$SetProp$m_flChargeBeginTime|" } OnSpawnOutput { Target "@c@!activator" Action "$SetProp$m_flChargeBeginTime" Param "-1" Delay 0.01 } } shoot_spellbook_invictus1 { OnSpawnOutput { Target "rafmod_filter_invictus" Action "TestActivator" Delay 0.3 } OnSpawnOutput { Target "rafmod_filter_invictus" Action "TestActivator" Delay 0.5 } OnSpawnOutput { Target "rafmod_filter_invictus" Action "TestActivator" Delay 0.8 } OnSpawnOutput { Target "rafmod_filter_invictus" Action "TestActivator" Delay 1 } OnSpawnOutput { Target "rafmod_filter_healing" Action "TestActivator" Delay 1 } filter_multi //if using healing aura spell { "targetname" "rafmod_filter_invictus" "filter01" "rafmod_filter_healing" "filter01" "rafmod_filter_conch" "OnPass" "spellbook_invictus_boosts,Enable,,0,1" "OnPass" "spellbook_invictus_boosts,AddOutput,OnStartTouch !activator:$AddCond:29 6:0:-1,0,1" } filter_tf_condition { "targetname" "rafmod_filter_healing" "condition" "73" "OnPass" "player,$DisplayTextChat,{red}{activator}{reset} has used their {darkgreen}Healing Aura{reset} Spell!,0,1" "OnFail" "player,$DisplayTextChat,{red}{activator}{reset} has used their {darkgreen}Blast Jump{reset} Spell!,0,1" } filter_tf_condition //conch bonus { "targetname" "rafmod_filter_conch" "condition" "56" } trigger_multiple { "targetname" "spellbook_invictus_boosts" "maxs" "825 825 825" "mins" "-825 -825 -825" "filtername" "rafmod_filter_red" "spawnflags" "1" "startdisabled" "1" "OnStartTouch" "!activator,$AddCond,57 1,0,-1" //uber "OnStartTouch" "!activator,$AddCond,73 3,0,-1" //healing } trigger_multiple //angles set to 30 degrees { "targetname" "spellbook_invictus_boosts" "maxs" "825 825 825" "mins" "-825 -825 -825" "angles" "0 30 0" "filtername" "rafmod_filter_red" "spawnflags" "1" "startdisabled" "1" "OnStartTouch" "!activator,$AddCond,57 1,0,-1" //uber "OnStartTouch" "!activator,$AddCond,73 3,0,-1" //healing } trigger_multiple //angles set to 60 degrees { "targetname" "spellbook_invictus_boosts" "maxs" "825 825 825" "mins" "-825 -825 -825" "angles" "0 60 0" "filtername" "rafmod_filter_red" "spawnflags" "1" "startdisabled" "1" "OnStartTouch" "!activator,$AddCond,57 1,0,-1" //uber "OnStartTouch" "!activator,$AddCond,73 3,0,-1" //healing } OnSpawnOutput { Target "rafmod_filter_invictus" Action "Kill" Delay 2 } OnSpawnOutput { Target "rafmod_filter_healing" Action "Kill" Delay 2 } OnSpawnOutput { Target "rafmod_filter_conch" Action "Kill" Delay 1 } OnSpawnOutput { Target "spellbook_invictus_boosts" Action "Kill" Delay 1 } } equip_spellbook_invictus1 { } equip_spellbook_bombinomicon { OnSpawnOutput { Target "!activator" Action "$AddPlayerAttribute" Param "killstreak tier|3" } OnSpawnOutput { Target "!activator" Action "$AddPlayerAttribute" Param "killstreak idleeffect|5" } OnSpawnOutput { Target "!activator" Action "$AddPlayerAttribute" Param "killstreak effect|2002" } OnParentKilledOutput { Target "!activator" Action "$RemovePlayerAttribute" Param "killstreak tier" } OnParentKilledOutput { Target "!activator" Action "$RemovePlayerAttribute" Param "killstreak idleeffect" } OnParentKilledOutput { Target "!activator" Action "$RemovePlayerAttribute" Param "killstreak effect" } } ////////////////// /// Equip Head /// ////////////////// equip_head_alakablamicon { OnSpawnOutput { Target "@c@!activator" Action "$GetProp$m_iSpellCharges" Param "spellbook_regenerator_math|SetValueNoFire|" } OnSpawnOutput { Target "@c@!activator" Action "$GetProp$m_iSelectedSpellIndex" Param "spellbook_regenerator_savespell|SetValueNoFire|" } OnSpawnOutput { Target "spellbook_regenerator_setup" Action "$Format" } OnSpawnOutput { Target "spellbook_regenerator_math" Action "GetValue" Delay 0.1 } math_counter { "targetname" "spellbook_regenerator_savespell" "OutValue" "!activator,$DisplayTextChat,,0,-1" "OnGetValue" "@c@!activator,$SetProp$m_iSelectedSpellIndex,,0,-1" } math_counter { "targetname" "spellbook_regenerator_math" "min" "0" "max" "9" "OutValue" "@c@!activator,$SetProp$m_iSpellCharges,,0,-1" "OutValue" "spellbook_regenerator_savespell,GetValue,,0,-1" "OutValue" "spellbook_regenerator_math,GetValue,,14.9,-1" // regeneration time "OnGetValue" "!activator,$PlaySound,Halloween.spell_pickup,0,-1" "OnGetValue" "@c@!activator,$GetProp$m_iSpellCharges,!caller|SetValueNoFire|,0,-1" "OnGetValue" "spellbook_regenerator_math,Add,1,0.1,-1" } logic_case { "targetname" "spellbook_regenerator_setup" "case16" "OnGetValue @c@!activator:$GetProp$m_iSelectedSpellIndex:%|SetValue|:0:-1" "case01" "spellbook_regenerator_savespell" "ondefault" "spellbook_regenerator_math,AddOutput,,0,1" "ondefault" "!caller,Kill,,0,1" } RemoveIfKilled "spellbook_regenerator_math" RemoveIfKilled "spellbook_regenerator_savespell" } spell_cap { OnSpawnOutput { Target "!activator" Action "$SetProp$m_iSpellCharges" Param 0 } } ////////////////// /// Equip Misc /// ////////////////// equip_armor_basic { } equip_shield_basic { } equip_dispenser_backpack { OnSpawnOutput { Target "rafmod_relay_dispenser_backpack" Action "Trigger" } logic_relay { "targetname" "rafmod_relay_dispenser_backpack" "spawnflags" "1" "OnTrigger" "pickup_dispenser_backpack,$SetProp$m_iObjectType,3,0,1" "OnTrigger" "pickup_dispenser_backpack,SetBuilder,!activator,0.1,1" } dispenser_touch_trigger { "targetname" "pickup_dispenser_backpack_trigger" "origin" "0 0 0" "mins" "-300 -300 -300" "maxs" "300 300 300" "spawnflags" "1" } pd_dispenser { "targetname" "pickup_dispenser_backpack" "teamnum" "2" "spawnflags" "4" "touch_trigger" "pickup_dispenser_backpack_trigger" } } equip_dispenser_ghost { OnSpawnOutput { Target "rafmod_relay_dispenser_ghost" Action "Trigger" } logic_relay { "targetname" "rafmod_relay_dispenser_ghost" "spawnflags" "1" "OnTrigger" "pickup_dispenser_ghost,$SetProp$m_iObjectType,3,0,1" "OnTrigger" "pickup_dispenser_ghost,SetBuilder,!activator,0.1,1" } OnSpawnOutput { Target "rafmod_filter_ghost_dispenser" Action "FireUser1" } filter_multi { "targetname" "rafmod_filter_ghost_dispenser" "filter01" "rafmod_filter_player" "filter02" "" "OnUser1" "!caller,$SetKey$filter02,$$='filter_player_'..!activator.EntIndex,0,1" } dispenser_touch_trigger { "targetname" "pickup_dispenser_ghost_trigger" "filtername" "rafmod_filter_ghost_dispenser" "origin" "0 0 0" "mins" "-100 -100 -100" "maxs" "100 100 100" "spawnflags" "1" } rd_robot_dispenser { "targetname" "pickup_dispenser_ghost" "teamnum" "2" "spawnflags" "4" "touch_trigger" "pickup_dispenser_ghost_trigger" } } equip_advanced_apollo { OnSpawnOutput { Target "!activator" Action "$AddPlayerAttribute" Param "air dash count|1" } OnParentKilledOutput { Target "!activator" Action "$RemovePlayerAttribute" Param "air dash count" } OnSpawnOutput { Target "!activator" Action "$AddPlayerAttribute" Param "increased jump height|1.3" } OnParentKilledOutput { Target "!activator" Action "$RemovePlayerAttribute" Param "increased jump height" } OnSpawnOutput { Target "!activator" Action "$AddPlayerAttribute" Param "cancel falling damage|1" } OnParentKilledOutput { Target "!activator" Action "$RemovePlayerAttribute" Param "cancel falling damage" } $filter_sendprop { "targetname" "rafmod_filter_airjump_count" "$name" "m_iAirDash" "$value" "1" "$compare" "equal" } $filter_sendprop { "targetname" "rafmod_filter_player_is_jumping" "$name" "m_bJumping" "$value" "1" "$compare" "equal" } OnSpawnOutput { Target "rafmod_filter_airjump" Action "FireUser1" } filter_multi { "targetname" "rafmod_filter_airjump" "filter01" "rafmod_filter_airjump_count" "filter02" "rafmod_filter_player_is_jumping" "OnUser1" "rafmod_filter_airjump,$SetKey$filter03,$$='filter_player_'..!activator.EntIndex,0,1" "OnPass" "!activator,$TakeDamage,10,0,-1" "OnPass" "!activator,$SetProp$m_iAirDash,0,0,-1" } trigger_multiple { "filtername" "rafmod_filter_airjump" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.01" "OnTrigger" "rafmod_filter_airjump,TestActivator,,0,-1" } } ///////////// /// Scout /// ///////////// shoot_starstunner { tf_projectile_jar_milk { "targetname" "jar_milk" "modelscale" "3" "fademindist" "-1" "renderamt" "255" "rendercolor" "255 255 255" } OnSpawnOutput { Target "jar_milk" Action "$SetOwner" Param "!activator" Delay 0 } } equip_starstunner { } /////////////// /// Soldier /// /////////////// equip_booze_banner { //rage regen logic OnSpawnOutput { Target "rage_regenerator_math" Action "GetValue" Delay 0 } logic_branch { "targetname" "rage_regenerator_IsRageDraining" "OnTrue" "rage_regenerator_math,Add,0,0,-1" "OnFalse" "rage_regenerator_math,Add,5,0,-1" //regeneration amount } math_counter { "targetname" "rage_regenerator_math" "min" "0" "max" "100" // "OutValue" "!activator,$DisplayTextChat,,0,-1" //debug "OutValue" "!activator,$SetProp$m_flRageMeter,,0,-1" "OutValue" "rage_regenerator_math,GetValue,,1,-1" //regeneration time "OnGetValue" "!activator,$GetProp$m_flRageMeter,!caller|SetValueNoFire|,0,-1" "OnGetValue" "!activator,$GetProp$m_bRageDraining,rage_regenerator_IsRageDraining|SetValueTest|,0,-1" } // custom backpack model OnSpawnOutput { Target "rafmod_filter_soldier_booze_banner_custommodel" Action "TestActivator" Delay 0.01 } filter_tf_class { "targetname" "rafmod_filter_soldier_booze_banner_custommodel" "tfclass" "3" //solly "OnPass" "@c@!activator,$SetKey$solid,2,0,1" "OnPass" "@c@!activator,AddOutput,OnUser1 rafmod_filter_weapon_setmodel_booze_banner_soldier:TestActivator::0:1,0.1,1" "OnPass" "@c@!activator,$FireUserAsActivator1,,0.2,1" "OnPass" "rafmod_filter_soldier_booze_banner_custommodel,Kill,,0.3,1" } } equip_soldier_sword_shield { } equip_battle_booster { //rage regen logic OnSpawnOutput { Target "!activator" Action "$SetProp$m_flRageMeter" Param "100" } $filter_sendprop { "targetname" "rafmod_filter_solly_RageDraining" "$name" "m_bRageDraining" "$value" "1" "$compare" "equal" } filter_tf_condition { "targetname" "rafmod_filter_solly_MiniCritBoosted" "condition" "16" } OnSpawnOutput { Target "rafmod_filter_solly_RageDraining_multi" Action "FireUser1" } filter_multi { "targetname" "rafmod_filter_solly_RageDraining_multi" "filter01" "rafmod_filter_solly_RageDraining" "filter02" "rafmod_filter_solly_MiniCritBoosted" "filter03" "" "OnUser1" "!caller,$SetKey$filter03,$$='filter_player_'..!activator.EntIndex,0,1" } trigger_multiple { "filtername" "rafmod_filter_solly_RageDraining_multi" "mins" "-255 -255 -255" "maxs" "255 255 255" "spawnflags" "1" "wait" "0.05" "OnTrigger" "!activator,$AddCond,56 1,0,-1" "OnTrigger" "!activator,$RemoveCond,16,0,-1" } } //////////// /// Pyro /// //////////// shoot_fireball //The Fi'o'ball { OnSpawnOutput { Target "fierball" Action "$setowner" Param "!activator" Delay 0.01 } tf_projectile_spellfireball { "targetname" "fierball" "origin" "0 0 0" "teamnum" "2" } OnSpawnOutput { Target "!activator" Action "$SetProp$m_flItemChargeMeter$1" Param 0 } } equip_fireball //The Fi'o'ball { } /////////////// /// Demoman /// /////////////// equip_eyelander { //eyelander load handler OnSpawnOutput { Target "eyelander_load_decaps" Action "FireUser1" Delay 0.1 } logic_relay { "targetname" "eyelander_load_decaps" "OnTrigger" "!activator,SetHealth,10000,0.1,1" //fixes health not refreshing on respawn "OnUser1" "!caller,$SetKey$targetname,$$='eyelander_load_decaps_player_'..!activator.EntIndex,0,-1" "OnUser1" "!caller,AddOutput,$$='OnTrigger eyelander_save_decaps_player_'..!activator.EntIndex..':Add:0:0:-1',0,-1" "OnUser1" "!caller,Trigger,,0.1,1" } } ///////////// /// Heavy /// ///////////// equip_russian_resolve { OnSpawnOutput { Target "rafmod_heavy_russian_resolve_case" Action "FireUser1" Delay 0.1 } OnSpawnOutput { Target "rafmod_heavy_russian_resolve_case" Action "$Format" Delay 0.2 } logic_case { "targetname" "rafmod_heavy_russian_resolve_case" "case16" "OnUser1 %:TestActivator::0:1" "case01" "rafmod_heavy_russian_resolve_mod" "ondefault" "@c@!activator,AddOutput,,0,-1" "ondefault" "@c@!activator,$FireUserAsActivator1,,0.1,-1" "ondefault" "!caller,Kill,,0.2,1" } $filter_sendprop { "targetname" "rafmod_heavy_russian_resolve_mod" "$name" "m_iItemDefinitionIndex" "$value" "312" "OnPass" "rafmod_heavy_russian_resolve_weaponstate,TestActivator,,1,-1" } $filter_sendprop { "targetname" "rafmod_heavy_russian_resolve_weaponstate" "$name" "m_iWeaponState" "$value" "3" "$compare" "greater than or equal" "OnPass" "m_heavy_russian_resolve_aura,ForceSpawnAtEntityOrigin,!activator,0,-1" "OnPass" "rafmod_heavy_russian_resolve_mod,TestActivator,,0,-1" "OnFail" "rafmod_heavy_russian_resolve_mod,TestActivator,,0,-1" "OnPass" "medishield,SetModelScale,0.75,0,-1" "OnFail" "medishield,SetModelScale,0,0,-1" } logic_case { "targetname" "rafmod_heavy_russian_resolve_case" "case16" "OnPass %:$TestEntity:%:0:-1" "case01" "rafmod_heavy_russian_resolve_is_ducking" "case02" "player name" "OnUser1" "!activator,$GetProp$EntIndex,!caller|$SetKey$case02|,0,1" "ondefault" "rafmod_heavy_russian_resolve_weaponstate,AddOutput,,0.1,-1" "ondefault" "!caller,Kill,,0.2,1" } $filter_sendprop { "targetname" "rafmod_heavy_russian_resolve_is_ducking" "$name" "m_bDucked" "$value" "1" "$compare" "greater than or equal" "OnPass" "medishield,SetModelScale,1,0,-1" } logic_case { "targetname" "rafmod_heavy_russian_resolve_case" "case16" "OnPass %:$AddPlayerAttribute:damage force reduction|0:0:-1" "case16" "OnFail %:$RemovePlayerAttribute:damage force reduction:0:-1" "case16" "OnPass %:$AddCond:45:0:-1" "case16" "OnFail %:$RemoveCond:45:0:-1" "case16" "OnPass m_heavy_russian_resolve_gravity:ForceSpawnAtEntityOrigin:%:0:-1" "case01" "player name" "OnUser1" "!activator,$GetProp$EntIndex,!caller|$SetKey$case01|,0,1" "ondefault" "rafmod_heavy_russian_resolve_is_ducking,AddOutput,,0.1,1" "ondefault" "!caller,Kill,,0.2,1" } env_entity_maker { "targetname" "m_heavy_russian_resolve_aura" "EntityTemplate" "t_heavy_russian_resolve_aura" } env_entity_maker { "targetname" "m_heavy_russian_resolve_gravity" "EntityTemplate" "t_heavy_russian_resolve_gravity" } RemoveIfKilled "rafmod_heavy_russian_resolve_mod" RemoveIfKilled "rafmod_heavy_russian_resolve_weaponstate" RemoveIfKilled "m_heavy_russian_resolve_aura" RemoveIfKilled "m_heavy_russian_resolve_gravity" entity_medigun_shield { "targetname" "medishield" "teamnum" "2" "spawnflags" "1" "modelscale" "0" "origin" "38 0 0" } RemoveIfKilled "medishield" } t_heavy_russian_resolve_aura { trigger_multiple { "targetname" "rafmod_heavy_russian_resolve_boosts" "maxs" "300 300 300" "mins" "-300 -300 -300" "filtername" "rafmod_filter_red" "spawnflags" "1" "OnStartTouch" "!activator,$AddCond,26 1,0,-1" } trigger_multiple //angles set to 30 degrees { "targetname" "rafmod_heavy_russian_resolve_boosts" "maxs" "300 300 300" "mins" "-300 -300 -300" "angles" "0 30 0" "filtername" "rafmod_filter_red" "spawnflags" "1" "OnStartTouch" "!activator,$AddCond,26 1,0,-1" } trigger_multiple //angles set to 60 degrees { "targetname" "rafmod_heavy_russian_resolve_boosts" "maxs" "300 300 300" "mins" "-300 -300 -300" "angles" "0 60 0" "filtername" "rafmod_filter_red" "spawnflags" "1" "OnStartTouch" "!activator,$AddCond,26 1,0,-1" } OnSpawnOutput { Target "rafmod_heavy_russian_resolve_boosts" Action "Kill" Delay 1 } } t_heavy_russian_resolve_gravity { OnSpawnOutput { Target "heavy_russian_resolve_gravity_enabled" Action "FireUser1" } info_particle_system { "targetname" "heavy_russian_resolve_gravity_enabled" "effect_name" "teleporter_red_entrance" "start_active" "1" "OnUser1" "!self,Kill,,1,1" } } equip_heavy_rage { OnSpawnOutput { Target "!activator" Action "$WeaponSwitchSlot" Param "2" } OnSpawnOutput { Target "!activator" Action "$SetProp$m_iAmmo$1" Param "0" } //rage logic OnSpawnOutput { Target "!activator" Action "AddOutput" Param "$OnDamageReceived !self:$SetVar$HeavysRageInValue::0:-1" } OnSpawnOutput { Target "!activator" Action "AddOutput" Param "$OnDamageReceived !self:$DisplayTextChat::0:-1" } OnSpawnOutput { Target "!activator" Action "AddOutput" Param "$OnDamageReceived !self:$FireUserAsActivator1::0:-1" } OnSpawnOutput { Target "!activator" Action "AddOutput" Param "OnUser1 heavy_rage_regenerator_math:Add:$$=int(!activator.HeavysRageInValue / 3):0:-1" } OnParentKilledOutput { Target "!activator" Action "$RemoveOutput" Param "$OnDamageReceived" } OnSpawnOutput { Target "heavy_rage_regenerator_math" Action "Add" Param "0" } math_counter { "targetname" "heavy_rage_regenerator_math" "min" "0" "max" "100" "startvalue" "10" "OutValue" "!caller,$SetKey$CurrentValue,,0,-1" "OutValue" "!activator,$SetProp$m_flRageMeter,,0,-1" // "OutValue" "!activator,$SetVar$HeavysRageInValue,,0,-1" "OutValue" "rafmod_filter_heavys_rage_current_value,$SetKey$$value,,0,-1" // "OnGetValue" "!activator,$AddPlayerAttribute,$$='damage bonus|'..float(!activator.HeavysRageTotal / 100 + 1),0,-1" "OutValue" "!activator,$AddPlayerAttribute,$$='dmg from melee increased|'..float(1 - (!activator.m_flRageMeter / 200)),0.01,-1" "OnHitMax" "particle_heavys_rage_ready,Start,,0,-1" "OnHitMin" "particle_heavys_rage_ready,Stop,,0,-1" } // Effects info_particle_system { "targetname" "particle_heavys_rage_ready" "effect_name" "superrare_beams1" "start_active" "0" "flag_as_weather" "0" } OnSpawnOutput { Target "particle_heavys_rage_ready" Action "SetParent" Param "!activator" Delay 0 } OnSpawnOutput { Target "particle_heavys_rage_ready" Action "SetParentAttachment" Param "eyes" Delay 0.1 } info_particle_system { "targetname" "particle_heavys_rage_active_R" "effect_name" "superrare_burning1" "start_active" "0" "flag_as_weather" "0" } info_particle_system { "targetname" "particle_heavys_rage_active_L" "effect_name" "superrare_burning1" "start_active" "0" "flag_as_weather" "0" } OnSpawnOutput { Target "particle_heavys_rage_active_R" Action "SetParent" Param "!activator" Delay 0 } OnSpawnOutput { Target "particle_heavys_rage_active_R" Action "SetParentAttachment" Param "effect_hand_R" Delay 0.1 } OnSpawnOutput { Target "particle_heavys_rage_active_L" Action "SetParent" Param "!activator" Delay 0 } OnSpawnOutput { Target "particle_heavys_rage_active_L" Action "SetParentAttachment" Param "effect_hand_L" Delay 0.1 } // Detection $filter_sendprop { "targetname" "rafmod_filter_heavys_rage_current_value" "$name" "m_flRageMeter" "$value" "0" "$compare" "equal" "Negated" "1" } OnSpawnOutput { Target "rafmod_filter_heavys_rage_updater" Action "FireUser1" } filter_multi { "targetname" "rafmod_filter_heavys_rage_updater" "filter01" "rafmod_filter_heavys_rage_current_value" "filter02" "rafmod_filter_heavys_rage_is_not_draining" "OnUser1" "!caller,$SetKey$filter03,$$='filter_player_'..!activator.EntIndex,0,1" } trigger_multiple { "filtername" "rafmod_filter_heavys_rage_updater" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.5" "OnTrigger" "heavy_rage_regenerator_math,$GetVar$CurrentValue,rafmod_filter_heavys_rage_current_value|$SetKey$$value|,0,-1" } filter_tf_condition { "targetname" "rafmod_filter_heavys_rage_heavy_is_taunting" "condition" "7" } $filter_sendprop { "targetname" "rafmod_filter_heavys_rage_is_100" "$name" "m_flRageMeter" "$value" "100" "$compare" "equal" } $filter_sendprop { "targetname" "rafmod_filter_heavys_rage_is_not_draining" "$name" "m_bRageDraining" "$value" "0" "$compare" "equal" } OnSpawnOutput { Target "rafmod_filter_heavys_rage_ready" Action "FireUser1" } filter_multi { "targetname" "rafmod_filter_heavys_rage_ready" "filter01" "rafmod_filter_heavys_rage_heavy_is_taunting" "filter02" "rafmod_filter_heavys_rage_is_100" "filter03" "rafmod_filter_heavys_rage_is_not_draining" "OnUser1" "!caller,$SetKey$filter04,$$='filter_player_'..!activator.EntIndex,0,1" } trigger_multiple { "filtername" "rafmod_filter_heavys_rage_ready" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.1" "OnTrigger" "player,$BotCommand,interrupt_action -posent !activator -lookposent !activator -killlook,0,-1" "OnTrigger" "!activator,$RemoveCond,7,0,1" "OnTrigger" "rafmod_trigger_heavys_rage_finished,Enable,,0,-1" "OnTrigger" "particle_heavys_rage_ready,Stop,,0,-1" "OnTrigger" "particle_heavys_rage_active_R,Start,,0,-1" "OnTrigger" "particle_heavys_rage_active_L,Start,,0,-1" "OnTrigger" "!activator,$AddPlayerAttribute,damage penalty|2,0,-1" // knockback fix "OnTrigger" "!activator,$RemoveItemAttribute,damage causes airblast|2,0,-1" // knockback fix "OnTrigger" "!activator,$AddItemAttribute,melee cleave attack|1|2,0,-1" // cleaves "OnTrigger" "!activator,$AddCond,11,0,-1" "OnTrigger" "!activator,$PlaySequence,layer_taunt_soviet_showoff,0,-1" // "OnTrigger" "!activator,$PlaySequence,layer_taunt07_Halloween,0,-1" "OnTrigger" "!activator,$SetProp$m_bViewingCYOAPDA,1,0.1,-1" //useful netprop! disables movement and attack but keeps camera movement. Needs delay here or else borks "OnTrigger" "!activator,$AddCond,51 6.2,0,-1" // "OnTrigger" "!activator,$PlaySequence,run_MELEE,5.63,-1" "OnTrigger" "!activator,$SetProp$m_bRageDraining,1,6.2,-1" "OnTrigger" "!activator,$SetProp$m_bViewingCYOAPDA,0,5.65,-1" //This plays the voiceline "OnTrigger" "!activator,AddContext,weaponmode:melee,0,-1" "OnTrigger" "!activator,AddContext,crosshair_enemy:Yes,0,-1" // "OnTrigger" "!activator,SpeakResponseConcept,TLK_PLAYER_BATTLECRY,0,-1" //broken; can't use while taunting for some reason. Using clientcommand instead "OnTrigger" "battlecry,Command,voicemenu 2 1,0,-1" "OnTrigger" "!activator,ClearContext,,0.3,-1" } point_clientcommand { "targetname" "battlecry" } $filter_sendprop { "targetname" "rafmod_filter_heavys_rage_is_empty" "$name" "m_flRageMeter" "$value" "0" "$compare" "equal" } OnSpawnOutput { Target "rafmod_filter_heavys_rage_finished" Action "FireUser1" } filter_multi { "targetname" "rafmod_filter_heavys_rage_finished" "filter01" "rafmod_filter_heavys_rage_is_empty" "OnUser1" "rafmod_filter_heavys_rage_finished,$SetKey$filter02,$$='filter_player_'..!activator.EntIndex,0,1" } trigger_multiple { "targetname" "rafmod_trigger_heavys_rage_finished" "filtername" "rafmod_filter_heavys_rage_finished" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.01" "StartDisabled" "1" "OnTrigger" "!self,Disable,,0,-1" "OnTrigger" "particle_heavys_rage_active_R,Stop,,0,-1" "OnTrigger" "particle_heavys_rage_active_L,Stop,,0,-1" "OnTrigger" "!activator,$AddPlayerAttribute,damage penalty|1,0,-1" "OnTrigger" "!activator,$RemoveCond,11,0,-1" "OnTrigger" "!activator,$AddItemAttribute,damage causes airblast|1|2,0,-1" "OnTrigger" "!activator,$RemoveItemAttribute,melee cleave attack|2,0,-1" } } } //////////////// /// Engineer /// //////////////// PointTemplates { building_dispenser_medieval { OnSpawnOutput { Target "!activator" Action "AddHealth" Param "$$=int(test(!activator.m_flPercentageConstructed < 100,50,0))" } OnSpawnOutput { Target "!activator" Action "$SetProp$m_iMaxHealth" Param "100" } OnSpawnOutput { Target "!activator" Action "SetModelScale" //refreshes building bounding box / maxs/mins Param "1" } // OnSpawnOutput // { // Target "!activator" // Action "$GetProp$m_hBuilder" // Param "mini_dispenser|$SetProp$m_hBuilder|" // } OnSpawnOutput { Target "!activator" Action "$SetModel" Param "models/props_2fort/frog.mdl" } OnSpawnOutput { Target "medieval_dispenser_relay" Action "Trigger" } logic_relay { "targetname" "medieval_dispenser_relay" "spawnflags" "1" "OnTrigger" "!activator,$SetProp$m_bMiniBuilding,1,0,1" "OnTrigger" "!activator,$SetProp$m_iUpgradeMetal,0,0,1" //how much metal is in to upgrade "OnTrigger" "!activator,$SetProp$m_iUpgradeMetalRequired,0,0,1" //how much metal threshold required to upgrade to next level // "OnTrigger" "!activator,$SetProp$m_iAmmoMetal,400,0,1" //stored metal "OnTrigger" "!activator,$SetProp$m_iHighestUpgradeLevel,1,0,1" //denotes what literal level it's already at, similar to defaultupgrade "OnTrigger" "!activator,AddOutput,maxs 20 20 18,0,1" //bounding box size } OnSpawnOutput { Target "vgui_screen" Action "Kill" } $filter_sendprop { "targetname" "rafmod_filter_obj_frog_construction_complete" "$name" "m_flPercentageConstructed" "$value" "1" //1 = 100% "$compare" "equal" } OnSpawnOutput { Target "rafmod_obj_frog_rot" Action "SetParent" Param "!activator" } OnSpawnOutput { Target "rafmod_obj_frog_rot" Action "SetParentAttachment" Param "heal_origin" Delay 0.01 } OnSpawnOutput { Target "rafmod_obj_frog_rot" Action "Open" } func_door { "targetname" "rafmod_obj_frog_rot" "mins" "-5 -5 -5" "maxs" "5 5 5" "movedir" "-90 0 0" "spawnflags" "4104" "speed" "0.1" "wait" "0.01" "OnFullyClosed" "!self,Open,,0,-1" } trigger_multiple { "filtername" "rafmod_filter_obj_frog_construction_complete" "parentname" "rafmod_obj_frog_rot" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "64" "wait" "0.01" //constant detection "OnTrigger" "!activator,$SetModel,models/props_2fort/frog.mdl,0,1" //replaces model with frog "OnTrigger" "!activator,AddOutput,maxs 20 20 18,0.01,1" //bounding box size "OnTrigger" "!activator,SetModelScale,1,0.1,1" //bounding box size "OnTrigger" "!caller,Kill,,0,1" "OnTrigger" "rafmod_obj_frog_find_player,Enable,,0,1" } //detects players to give magic to trigger_multiple { "targetname" "rafmod_obj_frog_find_player" "filtername" "rafmod_filter_player" "parentname" "rafmod_obj_frog_rot" "mins" "-120 -120 -120" "maxs" "120 120 120" "spawnflags" "1" "wait" "1" //constant detection "StartDisabled" "1" "OnTrigger" "rafmod_obj_frog_give_magic,$RemoveOutput,OnTrigger,0,-1" "OnTrigger" "rafmod_obj_frog_give_magic,AddOutput,OnTrigger !caller:Disable::0:1" "OnTrigger" "rafmod_obj_frog_give_magic,AddOutput,OnTrigger !caller:FireUser1::0:1" "OnTrigger" "rafmod_obj_frog_give_magic,AddOutput,$$='OnTrigger magic_meter_math_current_player_'..!activator.EntIndex..':Add:$$=test(!activator.m_iAmmoMetal >= 40,40,!activator.m_iAmmoMetal):0:1',0.01,-1" "OnTrigger" "rafmod_obj_frog_give_magic,AddOutput,$$='OnTrigger !activator:$SetProp$m_iAmmoMetal:$$=?((!activator.m_iAmmoMetal + '..!activator.mp_Current..') > '..!activator.mp_Max..',!activator.m_iAmmoMetal,'..(!activator.mp_Max - !activator.mp_Current)..' - !activator.m_iAmmoMetal):0:1',0.01,-1" "OnTrigger" "rafmod_obj_frog_give_magic,AddOutput,$$='OnTrigger magic_meter_text_current_player_'..!activator.EntIndex..':$FireUserAsActivator3::0.01:1" "OnTrigger" "rafmod_obj_frog_give_magic,Enable,,0.04,-1" } $filter_sendprop { "targetname" "rafmod_filter_obj_frog_has_metal" "$name" "m_iAmmoMetal" "$value" "0" "$compare" "equal" "Negated" "1" } filter_multi { "targetname" "rafmod_filter_obj_frog_can_dispense" "filter01" "rafmod_filter_obj_frog_has_metal" "filter02" "rafmod_filter_obj_frog_construction_complete" } trigger_multiple { "targetname" "rafmod_obj_frog_give_magic" "filtername" "rafmod_filter_obj_frog_can_dispense" "parentname" "rafmod_obj_frog_rot" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "64" "wait" "0.01" //constant detection "StartDisabled" "1" "OnUser1" "!caller,$PlaySound,Halloween.spell_pickup,0,-1" } } building_sentry_ballista { OnSpawnOutput { Target "!activator" Action "AddHealth" Param "$$=int(test(!activator.m_flPercentageConstructed < 100,50,0))" } OnSpawnOutput { Target "!activator" Action "$SetProp$m_iMaxHealth" Param "100" } // prop OnSpawnOutput { Target "rafmod_flamethrower_prop" Action "SetParent" Param "!activator" } OnSpawnOutput { Target "rafmod_flamethrower_prop" Action "SetParentAttachment" Param "muzzle" Delay 0.01 } // prop_dynamic // { // "targetname" "rafmod_flamethrower_prop" // "model" "models/weapons/c_models/c_sentry_flamethrower/c_flamethrower_pilotlight.mdl" // } //relay OnSpawnOutput { Target "sentrygun_ballista_relay" Action "Trigger" } logic_relay { "targetname" "sentrygun_ballista_relay" "spawnflags" "1" //deletes self after OnSpawn or OnTrigger output "OnTrigger" "!activator,$SetKey$spawnflags,12,0,1" //infinite ammo to prevent sentry from using any ammo the normal way. "OnTrigger" "!activator,$SetProp$m_bMiniBuilding,1,0,1" } OnSpawnOutput { Target "rafmod_ballista_arrow_shooter" Action "$SetOwner" Param "!activator" } tf_point_weapon_mimic { "targetname" "rafmod_ballista_arrow_shooter" "speedmin" "2080" "speedmax" "2080" "WeaponType" "2" //arrows "SplashRadius" "160" "Damage" "90" "teamnum" "2" "Crits" "0" "modelscale" "1" "$killicon" "sledgehammer" } OnSpawnOutput { Target "rafmod_ballista_arrow_shooter" Action "SetParent" Param "!activator" } OnSpawnOutput { Target "rafmod_ballista_arrow_shooter" Action "SetParentAttachment" Param "muzzle" Delay 0.1 } OnSpawnOutput { Target "rafmod_ballista_arrow_shooter" Action "$SetLocalOrigin" Param "15 0 0" Delay 0.2 } OnSpawnOutput { Target "rafmod_obj_ballista_rot" Action "Open" } filter_activator_class { "targetname" "rafmod_filter_obj_ballista2" "filterclass" "obj_sentrygun" } $filter_sendprop { "targetname" "rafmod_filter_obj_ballista_state" "$name" "m_iState" "$value" "2" //means it's firing or wrangled "$compare" "equal" } $filter_sendprop //compares if ammo if >=6 { "targetname" "rafmod_filter_obj_ballista_has_enough_ammo" "$name" "m_iAmmoShells" "$value" "6" "$compare" "greater than or equal" } filter_multi { "targetname" "rafmod_filter_ballista_detect_firing" "filter01" "rafmod_filter_obj_ballista2" "filter02" "rafmod_filter_obj_ballista_state" "filter03" "rafmod_filter_obj_ballista_has_enough_ammo" } func_door { "targetname" "rafmod_obj_ballista_rot" "mins" "-10 -10 -10" "maxs" "10 10 10" "movedir" "-90 0 0" "spawnflags" "4104" "speed" "0.1" "wait" "0.01" "OnFullyClosed" "!self,Open,,0,-1" } trigger_multiple { "targetname" "rafmod_obj_ballista_trigger" "parentname" "rafmod_obj_ballista_rot" "filtername" "rafmod_filter_ballista_detect_firing" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "64" "wait" "0.8" "OnTrigger" "!activator,$SetProp$m_iAmmoShells,$$=(!activator.m_iAmmoShells - 6),0,-1" "OnTrigger" "rafmod_ballista_arrow_shooter,FireOnce,,0,-1" "OnTrigger" "!activator,$PlaySound,Weapon_CrusadersCrossbow.Single,0,-1" "OnTrigger" "!activator,$PlaySound,Weapon_CrusadersCrossbow.Single,0,-1" "OnTrigger" "!activator,$PlaySound,Weapon_CrusadersCrossbow.Single,0,-1" } trigger_multiple { "parentname" "rafmod_obj_ballista_rot" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "64" "wait" "0.5" } } } BuildingSpawnTemplate { Name building_dispenser_medieval ItemName "Medieval PDA" BuildingType "Dispenser" // Sentry // Dispenser // Teleporter Entry // Teleporter Exit // Sapper AllowBots 0 // Allow bots to spawn the template when building (Default: 0) } BuildingSpawnTemplate { Name building_sentry_ballista ItemName "Medieval PDA" BuildingType "Sentry" } PointTemplates { equip_medieval_masher { } equip_engineer_thermal_thruster { OnSpawnOutput { // Target "@f@rafmod_filter_weapon_setmodel_thermal_thruster_engineer@c@!activator" Action "$SetModelOverride" Param "models/weapons/c_models/c_rocketpack_engineer/c_rocketpack_engineer.mdl" Delay "0" } OnSpawnOutput { Target "rafmod_filter_engie_custommodel" Action "TestActivator" Delay 0.01 } filter_tf_class { "targetname" "rafmod_filter_engie_custommodel" "tfclass" "9" "OnPass" "!activator,SetCustomModel,models/player/engineer_medieval_rocketpack.mdl,0,1" "OnPass" "@c@!activator,$SetKey$solid,2,0,1" "OnPass" "@c@!activator,AddOutput,OnUser1 rafmod_filter_weapon_setmodel_thermal_thruster_engineer:TestActivator::0:1,0.1,1" "OnPass" "@c@!activator,$FireUserAsActivator1,,0.2,1" } OnSpawnOutput { Target "rafmod_filter_engie_custommodel" Action "Kill" Delay 0.1 } OnParentKilledOutput { Target "!activator" Action "SetCustomModel" } } GiveItem_Airborne_Accelerator { OnSpawnOutput { Target "!activator" Action "$GiveItem" Param "The Airborne Accelerator" } OnParentKilledOutput { Target "!activator" Action "$RemoveItem" Param "The Airborne Accelerator" } } equip_engineer_crossbow { } shoot_engineer_clay_pigeon { OnSpawnOutput { Target "clay_pigeon" Action "$GetProp$m_hOwnerEntity" Param "obj_sentrygun|$SetProp$m_hAutoAimTarget|" Delay 0.2 } base_boss { "targetname" "clay_pigeon" "health" "5" "max_health" "5" "teamnum" "2" "model" "models/workshop/player/items/pyro/hwn2021_wandering_wraith/hwn2021_wandering_wraith.mdl" "modelscale" "1" "renderamt" "255" "rendercolor" "255 255 255" "solid" "3" } } equip_harmony_of_repair { OnSpawnOutput { Target "!activator" Action "SetCustomModel" Param "models/player/engineer_medieval_rocketpack.mdl" Delay 0 } OnParentKilledOutput { Target "!activator" Action "SetCustomModel" } } ///////////// /// Medic /// ///////////// equip_healing_beam { OnSpawnOutput { Target "!activator" Action "SetCustomModel" Param "models/player/medic_medieval_medigun.mdl" Delay 0 } OnParentKilledOutput { Target "!activator" Action "SetCustomModel" } } ////////////// /// Sniper /// ////////////// shoot_bowmagic { //fire arrows OnSpawnOutput { Target "!activator" Action "$GetProp$m_hOwnerEntity" Param "magicarrow_get_player|$SetKey$case01|" Delay 0 } OnSpawnOutput { Target "magicarrow_get_player" Action "$Format" Delay 0.01 } logic_case { "targetname" "magicarrow_get_player" "case16" "OnUser1 rafmod_filter_sniper_magicarrows:$TestEntity:%:0:1" "case01" "z" "ondefault" "!caller,AddOutput,,0,1" //caller is "magicarrow_get_player" "ondefault" "!caller,FireUser1,,0.01,1" "OnUser1" "!caller,Kill,,0,1" } filter_tf_condition { "targetname" "rafmod_filter_sniper_magicarrows" "condition" "65" "OnPass" "@c@!activator,$SetProp$m_bArrowAlight,1,1,1" "OnPass" "fire_arrow_particle,Start,,0,1" } info_particle_system { "targetname" "fire_arrow_particle" "effect_name" "spell_fireball_small_red" "start_active" "0" "flag_as_weather" "0" } OnSpawnOutput { Target "rafmod_filter_sniper_magicarrows" Action "kill" Delay 1 } //ice arrows filter_tf_condition { "targetname" "rafmod_filter_sniper_magicarrows" "condition" "78" "OnPass" "ice_arrow_particle,Start,,0,1" } info_particle_system { "targetname" "ice_arrow_particle" "effect_name" "unusual_genplasmos_b_parent" "start_active" "0" "flag_as_weather" "0" } } equip_bowmagic { OnSpawnOutput { Target "rafmod_filter_sniper_firearrow" Action "TestActivator" Delay 0 } filter_tf_condition { "targetname" "rafmod_filter_sniper_firearrow" "condition" "65" "OnPass" "@c@!activator,$SetProp$m_bArrowAlight,1,1,1" } OnSpawnOutput { Target "rafmod_filter_sniper_firearrow" Action "kill" Delay 0.1 } } shoot_jarate_zombie { OnSpawnOutput { Target "projectile_jarate_zombie" Action "$SetOwner" Param "!activator" } tf_projectile_spellspawnzombie { "targetname" "projectile_jarate_zombie" "teamnum" "3" //setting this prevents the skeleton from spawning if owner is not the projectile's team. As a result, BLU skeletons can't be on RED's side. "$OnKilled" "m_shoot_jarate_zombie,ForceSpawn,,0,-1" } logic_measure_movement { "MeasureReference" "projectile_jarate_zombie" "MeasureTarget" "projectile_jarate_zombie" "MeasureType" "0" "Target" "m_shoot_jarate_zombie" "TargetReference" "projectile_jarate_zombie" "TargetScale" "1" } env_entity_maker { "targetname" "m_shoot_jarate_zombie" "EntityTemplate" "t_shoot_jarate_zombie" "OnEntitySpawned" "!self,Kill,,0,1" } } t_shoot_jarate_zombie { logic_relay { "spawnflags" "1" "OnSpawn" "jarate_zombie,Skin,0,0,1" "OnSpawn" "jarate_zombie,$SetKey$max_health,1000,0,1" "OnSpawn" "jarate_zombie,$SetKey$health,1000,0,1" "OnSpawn" "jarate_zombie,$SetModelOverride,models/bots/merasmus/merasmussmall.mdl,0,1" } tf_zombie { "targetname" "jarate_zombie" "teamnum" "2" } } shoot_sniper_boomerang { OnSpawnOutput { Target "boomerang" Action "$SetOwner" Param "!activator" Delay 0.01 } tf_projectile_rocket { "targetname" "boomerang" "$OnKilled" "boomerang_facetarget_loop1,Kill,,0,1" "$OnKilled" "boomerang_facetarget_loop2,Kill,,0,1" "teamnum" "2" "origin" "0 0 0" } OnSpawnOutput { Target "boomerang_facetarget_loop1" Action "Trigger" } logic_relay { "targetname" "boomerang_facetarget_loop1" // "OnTrigger" "boomerang,$SetProp$movetype,5,0,1" //sets rocket to gravity "OnTrigger" "boomerang,$FaceEntity,!activator,0,-1" // "OnTrigger" "boomerang,$GetProp$m_angRotation,boomerang|$SetData$m_angAbsRotation|,0,-1" // "OnTrigger" "boomerang,$SetLocalVelocity,$$=!activator.m_angRotation,0,-1" //doesn't work // "OnTrigger" "boomerang,$GetProp$m_angRotation,boomerang|$SetData$m_angRotation|,0,-1" // "OnTrigger" "boomerang,$GetProp$m_angRotation,boomerang|$SetData$m_vecAbsVelocity|,0,-1" // "OnTrigger" "boomerang,$GetData$m_vecVelocity,player|$DisplayTextChat|,0,-1" // "OnTrigger" "boomerang,$GetProp$m_angRotation,player|$DisplayTextChat|,0,-1" //model angles // "OnTrigger" "boomerang,$GetProp$m_vecOrigin,player|$DisplayTextChat|,0,-1" //origins // "OnTrigger" "boomerang,$GetData$m_angAbsRotation,player|$DisplayTextChat|,0,-1" "OnTrigger" "boomerang_facetarget_loop2,Trigger,,0.2,-1" } logic_relay { "spawnflags" "2" "targetname" "boomerang_facetarget_loop2" "OnTrigger" "boomerang_facetarget_loop1,Trigger,,0,-1" } } //////////////////////////// /// OnPlayer Attributes /// //////////////////////////// player_attributes_onspawn_once { // name players the first time they spawn OnSpawnOutput { Target "!activator" Action "$GetEntIndex" Param "!activator|$SetVar$EntIndex|" } OnSpawnOutput { Target "!activator" Action "$SetKey$targetname" Param "$$='player_'..int(!activator.EntIndex)" Delay 0.01 } OnSpawnOutput { Target "rafmod_filter_named_player_by_var" Action "FireUser1" } filter_activator_name { "targetname" "rafmod_filter_named_player_by_var" "filtername" "x" "OnUser1" "!caller,$SetKey$filtername,$$='player_'..!activator.EntIndex,0,1" "OnUser1" "!caller,$SetKey$targetname,$$='filter_player_'..!activator.EntIndex,0,1" } //eyelander save handler OnSpawnOutput { Target "eyelander_save_decaps" Action "FireUser1" Delay 0.1 } math_counter { "targetname" "eyelander_save_decaps" "OnUser1" "!caller,$SetKey$targetname,$$='eyelander_save_decaps_player_'..!activator.EntIndex,0,1" "OutValue" "!activator,$SetProp$m_iDecapitations,,0,-1" "OutValue" "eyelander_decap_calc_stats,Trigger,,0.01,-1" } } unused_item_bag_by_charges //Item Bag using spell charges { OnSpawnOutput { Target "!activator" Action "$SetVar$bag_SpellGeneric" Param "0" } OnSpawnOutput { Target "!activator" Action "$SetVar$bag_HealingAura" Param "0" } OnSpawnOutput { Target "!activator" Action "$GetPlayerAttribute" Param "non economy|!activator|$SetVar$bag_HealingAura|" Delay 0.01 //KEEP DELAY (for now) } OnSpawnOutput { Target "bag" Action "FireUser1" } logic_relay { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_open_relay_player_'..!activator.EntIndex,0,1" //names relay unique to player using it "OnUser1" "!caller,AddOutput,$$='OnTrigger bag_item_player_'..!activator.EntIndex..':$RemoveOutput:ondefault:0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger bag_item_player_'..!activator.EntIndex..':FireUser1::0:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger bag_item_player_'..!activator.EntIndex..':FireUser1::0.25:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger bag_item_player_'..!activator.EntIndex..':$Format::0.5:-1',0,1" "OnUser1" "!caller,AddOutput,$$='OnTrigger bag_menu_player_'..!activator.EntIndex..':$DisplayMenu:!activator:0.6:-1',0,1" "OnTrigger" "!activator,$GetPlayerAttribute,non economy|!activator|$SetVar$bag_HealingAura|,0,-1" // "OnUser1" "!caller,Trigger,,0.1,1" } logic_case { "targetname" "bag" "case16" "User's Item Bag" "case01" "!" "case02" "!" "case03" "!" "case04" "!" "case05" "!" "OnUser1" "!caller,$SetKey$targetname,$$='bag_menu_player_'..!activator.EntIndex,0,1" "OnUser1" "!caller,$SetKey$case16,$$=string(!activator.m_szNetname)..'\'s Item Bag',0,1" "OnUser1" "!caller,AddOutput,$$='OnCase01 bag_spell_player_'..!activator.EntIndex..'_slot01:Add:0:0:-1',0,1" } logic_case { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_item_player_'..!activator.EntIndex,0,1" "case16" "%PELL: Healing Aura (% charges)" "case01" "S" "case02" "INVALID" "OnUser1" "!caller,AddOutput,$$='ondefault !caller:$SetKey$case01:'..test(int(!activator.bag_HealingAura) != 0,..'!S:0:1'..,..'S:0:1'),0,-1" "OnUser1" "!caller,AddOutput,$$='ondefault !caller:$SetKey$case02:'..test(int(!activator.bag_HealingAura) != 0,..'No:0:1'..,int(!activator.bag_HealingAura)..':0:1'),0,-1" "OnUser1" "!caller,AddOutput,$$='ondefault bag_menu_player_'..!activator.EntIndex..':$SetKey$case01::0.1:1',0,-1" "OnUser1" "!caller,$Format,,0.2,-1" } math_counter { "targetname" "bag" "OnUser1" "!caller,$SetKey$targetname,$$='bag_spell_player_'..!activator.EntIndex..'_slot01',0,1" //names bag item "OutValue" "!activator,$GetPlayerAttribute,non economy|!activator|$SetVar$bag_SpellGeneric|,0,-1" "OutValue" "!activator,$GetPlayerAttribute,non economy|!activator|$SetVar$bag_HealingAura|,0,-1" "OutValue" "spell_charge_updater,$RemoveOutput,OnTrigger,0,-1" "OutValue" "spell_charge_updater,AddOutput,OnTrigger !self:FireUser4::0:-1,0.01,-1" "OutValue" "spell_charge_updater,AddOutput,$$='OnTrigger bag_spell_player_'..!activator.EntIndex..'_slot01:GetValue::0:-1',0.01,-1" "OnGetValue" "!activator,$AddPlayerAttribute,$$='non economy|'..int(!activator.bag_HealingAura),0,-1" "OnGetValue" "!activator,$SetVar$bag_HealingAura,$$=int(!activator.bag_SpellGeneric),0,-1" "min" "0" "max" "9" "OutValue" "@c@!activator,$SetProp$m_iSelectedSpellIndex,2,0,-1" //healing aura index "OutValue" "!activator,$GetPlayerAttribute,non economy|@c@!activator|$SetProp$m_iSpellCharges|,0.01,-1" //grabs spell charges value. If SelectedSpellIndex is -1, can't set this // "OutValue" "tf_weapon_spellbook,$SetProp$m_iSpellCharges,,0.1,-1" // "OutValue" "!activator,$AddPlayerAttribute,non economy|,0.4,-1" } $filter_variable { "targetname" "filter_spellcharges" "$name" "bag_SpellGeneric" "$value" "0" "$compare" "equal" "Negated" "1" } trigger_multiple { "targetname" "spell_charge_updater" "filtername" "filter_spellcharges" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.1" "OnTrigger" "!self,FireUser4,,0,-1" "OnUser4" "@c@!activator,$GetProp$m_iSpellCharges,filter_spellcharges|$SetKey$$value|,0,-1" } OnSpawnOutput { Target "filter_item_bag_activate" Action "FireUser1" } filter_tf_condition { "targetname" "filter_bag_taunt" "condition" "7" } filter_multi { "targetname" "filter_item_bag_activate" "filter01" "filter_bag_taunt" "OnUser1" "!caller,$SetKey$filter02,$$='filter_player_'..!activator.EntIndex,0,1" } trigger_multiple { "filtername" "filter_item_bag_activate" "mins" "-5 -5 -5" "maxs" "5 5 5" "spawnflags" "1" "wait" "0.1" "OnTrigger" "!activator,$RemoveCond,7,0,-1" "OnTrigger" "!activator,$FireUser8,,0,-1" // debug stuff // "OnTrigger" "!activator,$GetVar$bag_HealingAura,player|$DisplayTextChat|,1,-1" // "OnTrigger" "!activator,$GetPlayerAttribute,non economy|player|$DisplayTextChat|,1,-1" // "OnTrigger" "filter_spellcharges,$GetKey$$value,player|$DisplayTextChat|,1,-1" // "OnTrigger" "@c@!activator,$GetProp$m_iSpellCharges,player|$DisplayTextChat|,1.5,-1" } } unused_filters_engineer_onspawn { // named player tied to engie building filters OnSpawnOutput { Target "rafmod_filter_to_building_by_named_player_by_key" Action "FireUser1" Delay 0.7 } filter_activator_name { "targetname" "rafmod_filter_to_building_by_named_player_by_key" "filtername" "z" "OnUser1" "!activator,$GetProp$EntIndex,!caller|$SetKey$filtername|,0,1" } filter_multi //dwarf engie 100% upgrade cost { "targetname" "rafmod_filter_to_building_by_named_player_by_key_multi" "filter01" "rafmod_filter_to_building_by_named_player_by_key" "filter02" "rafmod_filter_cond_65" "OnPass" "rafmod_filter_obj_sentrygun_is_flamethrower_sentry_dwarf,TestActivator,,0,-1" } filter_multi //dwarf engie 75% upgrade cost { "targetname" "rafmod_filter_to_building_by_named_player_by_key_multi" "filter01" "rafmod_filter_to_building_by_named_player_by_key" "filter02" "rafmod_filter_cond_65" "filter03" "rafmod_filter_var_building_upgrade_cost_075" //variables below, hard-coded "OnPass" "!activator,$SetProp$m_iUpgradeMetalRequired,150,0,-1" "OnPass" "rafmod_filter_obj_sentrygun_is_flamethrower_sentry_dwarf,TestActivator,,0,-1" } filter_multi //dwarf engie 50% upgrade cost { "targetname" "rafmod_filter_to_building_by_named_player_by_key_multi" "filter01" "rafmod_filter_to_building_by_named_player_by_key" "filter02" "rafmod_filter_cond_65" "filter03" "rafmod_filter_var_building_upgrade_cost_050" //variables below, hard-coded "OnPass" "!activator,$SetProp$m_iUpgradeMetalRequired,100,0,-1" "OnPass" "rafmod_filter_obj_sentrygun_is_flamethrower_sentry_dwarf,TestActivator,,0,-1" } filter_multi //dwarf engie 25% upgrade cost { "targetname" "rafmod_filter_to_building_by_named_player_by_key_multi" "filter01" "rafmod_filter_to_building_by_named_player_by_key" "filter02" "rafmod_filter_cond_65" "filter03" "rafmod_filter_var_building_upgrade_cost_025" //variables below, hard-coded "OnPass" "!activator,$SetProp$m_iUpgradeMetalRequired,50,0,-1" "OnPass" "rafmod_filter_obj_sentrygun_is_flamethrower_sentry_dwarf,TestActivator,,0,-1" } filter_multi { "targetname" "rafmod_filter_obj_sentrygun_is_flamethrower_sentry_dwarf" "filter01" "rafmod_filter_obj_sentrygun_flamethrower_sentry" "filter02" "rafmod_filter_var_is_flamethrower_sentry" "OnPass" "m_flamethrower_sentry_red,ForceSpawnAtEntityOrigin,!activator,0,-1" "OnPass" "m_flamethrower_sentry_red_ammocount,ForceSpawnAtEntityOrigin,!activator,0,-1" } filter_activator_class { "targetname" "rafmod_filter_obj_sentrygun_flamethrower_sentry" "filterclass" "obj_sentrygun" } $filter_variable { "targetname" "rafmod_filter_var_is_flamethrower_sentry" "$name" "rocket_can_fire" "$value" "1" "Negated" "1" "$compare" "equal" } RemoveIfKilled "rafmod_filter_obj_sentrygun_is_flamethrower_sentry_dwarf" RemoveIfKilled "rafmod_filter_obj_sentrygun_flamethrower_sentry" RemoveIfKilled "rafmod_filter_var_is_flamethrower_sentry" $filter_variable { "targetname" "rafmod_filter_var_building_upgrade_cost_075" "$name" "UpgradeCostReduction" "$value" "0.75" } $filter_variable { "targetname" "rafmod_filter_var_building_upgrade_cost_050" "$name" "UpgradeCostReduction" "$value" "0.5" } $filter_variable { "targetname" "rafmod_filter_var_building_upgrade_cost_025" "$name" "UpgradeCostReduction" "$value" "0.25" } RemoveIfKilled "rafmod_filter_var_building_upgrade_cost_075" RemoveIfKilled "rafmod_filter_var_building_upgrade_cost_050" RemoveIfKilled "rafmod_filter_var_building_upgrade_cost_025" filter_multi //cyborg engie { "targetname" "rafmod_filter_to_building_by_named_player_by_key_multi" "filter01" "rafmod_filter_to_building_by_named_player_by_key" "filter02" "rafmod_filter_cond_78" "OnPass" "rafmod_filter_obj_sentrygun_is_disposable_cyborg,TestActivator,,0,-1" //filters sentry so it destroys itself when ammo is used up } OnSpawnOutput { Target "player_building_change_sendprop_value" Action "FireUser1" Delay 0.7 } $filter_sendprop //cyborg engie { "targetname" "rafmod_filter_destroy_builder_building" "$name" "m_hBuilder" "$value" "z" "OnPass" "!activator,RemoveHealth,10000,0,-1" // "OnPass" "player,$DisplayTextChat,passed,0,-1" //debug // "OnFail" "player,$DisplayTextChat,failed,0,-1" //debug } logic_case { "targetname" "player_building_change_sendprop_value" "case16" "$value %" "case01" "player name" "ondefault" "rafmod_filter_destroy_builder_building,AddOutput,,0,1" "ondefault" "!caller,Kill,,0,1" "OnUser1" "@c@!activator,$GetProp$m_hOwnerEntity,!caller|$SetKey$case01|,0,1" "OnUser1" "player_building_change_sendprop_value,$Format,,0.1,1" } $filter_sendprop //cyborg engie { "targetname" "rafmod_filter_obj_sentrygun_is_disposable_cyborg" "$name" "m_bDisposableBuilding" "$value" "0" "Negated" "1" //these are for parenting an unnamed disposable sentry "OnPass" "rafmod_filter_to_building_by_named_player_by_key,$GetKey$filtername,!activator|SetParent|,0,-1" "OnPass" "!activator,SetParentAttachment,head,0.01,-1" "OnPass" "!activator,$SetProp$m_iAmmoShells,75,0,-1" "OnPass" "!activator,$SetKey$solid,0,0,-1" "OnPass" "!activator,SetModelscale,0.25,0,-1" "OnFail" "!activator,$SetProp$m_bMiniBuilding,1,0,-1" } RemoveIfKilled "rafmod_filter_named_player_by_key" RemoveIfKilled "rafmod_filter_to_building_by_named_player_by_key_multi" RemoveIfKilled "rafmod_filter_to_building_by_named_player_by_key" RemoveIfKilled "rafmod_filter_obj_sentrygun_is_disposable_cyborg" RemoveIfKilled "rafmod_filter_destroy_builder_building" } player_attributes_onspawn { /// taunt cam OnSpawnOutput { Target "!activator" Action "setforcedtauntcam" Param 1 } /// subclasses OnSpawnOutput { Target "rafmod_filter_subclass" Action "TestActivator" Delay 0.5 } /// player attributes OnSpawnOutput { Target "!activator" Action "$SetProp$m_bGlowEnabled" Delay 0 Param "1" } /// Kills tf_viewmodels to reduce ent count /// however bugs out third person models (flickers) // OnSpawnOutput // { // Target "tf_viewmodel" // Action "Kill" // Delay 0.1 // } /// Adds invisibility on death (to prevent bot detection) OnParentKilledOutput { Target "!activator" Action "$AddCond" Param "66" Delay 0 } OnSpawnOutput { Target "!activator" Action "$RemoveCond" Param "66" Delay 0 } /// Refreshes health OnSpawnOutput { Target "!activator" Action "$SetKey$health" Param "0" Delay 0 } OnSpawnOutput { Target "!activator" Action "SetHealth" Param "10000" Delay 0.1 } /// Refreshes OnUser inputs OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "OnUser1" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "OnUser1" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "OnUser2" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "OnUser3" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "OnUser4" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "$OnUser5" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "$OnUser6" } OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "$OnUser7" } /// Item Bag /// $OnUser8 used for item bag OnSpawnOutput { Target "!activator" Action "$RemoveOutput" Param "$OnUser8" } OnSpawnOutput { Target "!activator" Action "AddOutput" Param "$$='$OnUser8 bag_open_relay_player_'..!activator.EntIndex..':Trigger::0:-1'" Delay 0.1 } } } ///////////////////// // Upgrades STUFF // ///////////////////// // ExtendedUpgradesNoUndo 1 ExtendedUpgradesOnly 1 UpgradeStationKeepWeapons 1 ExtendedUpgrades { MaxUpgradesTier // Specify how many upgrades can be bought per tier. (1 by default) { 1 1 // Max 2 upgrades on tier 1 2 9 // Max 1 upgrade on tier 2 3 9 // Max 1 upgrade on tier 2 } MinUpgradesTier // Specify how many upgrades have to be bought to unlock next tier. (1 by default) { 1 1 // Min 2 upgrades on tier 1 to unlock tier 2 2 6 // Min 1 upgrade on tier 2 to unlock tier 3 } ////////////////////////// /// Spellbook Upgrades /// ////////////////////////// Bag_Magic_Meter_Up { Name "Magic Energy Cost Reduction" Description "Reduces cost of magic by 1/4 per point" Attribute "loot rarity" Cap 3 Increment 1 Cost 1000 PlayerUpgrade 1 OnUpgrade { Output "!activator,$ResetInventory,,0" Output "!activator,$RefillAmmo,,0.01" } } Bag_SuperJump { Name "Buy Spell: Blast Jump" Attribute "cannot_transmute" Cap 1 Increment 1 Cost 500 PlayerUpgrade 1 } Bag_HealingAura { Name "Buy Spell: Healing Aura" Attribute "non economy" Cap 1 Increment 1 Cost 500 PlayerUpgrade 1 } Spell_Bombinomicon_Bombs { Name "Buy Spell: Bombs Away" Attribute "non economy" Cap 2 Increment 1 Cost 30 AllowedWeapons { ItemName "Spellbook BOMBINOMICON" } OnUpgrade { Output "!activator,$RemoveItemAttribute,non economy|9,0" Output "!activator,$AddSpell,Pumpkin MIRV,0" } } Spell_Invictus_Healing_Aura { Name "Buy Spell: Healing Aura" Attribute "non economy" Cap 2 Increment 1 Cost 25 AllowedWeapons { ItemName "Spellbook INVICTUS1" } OnUpgrade { Output "!activator,$RemoveItemAttribute,non economy|9,0" Output "!activator,$AddSpell,Healing Aura,0" } } Spell_Invictus_BlastJump { Name "Buy Spell: Blast Jump" Attribute "non economy" Cap 2 Increment 1 Cost 25 AllowedWeapons { ItemName "Spellbook INVICTUS1" } OnUpgrade { Output "!activator,$RemoveItemAttribute,non economy|9,0" Output "!activator,$AddSpell,Superjump,0" } } Spell_Invictus_Upgrade_MoreMaxHealth { Name "+10 Max Health" Attribute "max health additive bonus" Cap 50 Increment 10 Cost 50 AllowedWeapons { ItemName "Spellbook INVICTUS1" } } Spell_Invictus_Upgrade_Conch { Name "Magic Conch" Description "Upon casting, apply Vampirism and a Speed Boost to allies for 6 seconds" Attribute "add cond when active" Cap 56 Increment 56 Cost 100 Tier 1 AllowedWeapons { ItemName "Spellbook INVICTUS1" } } //////////////// /// Soldier /// ////////////// Soldier_Banner_BuffDuration { Name "+50% Buff Duration" Attribute "increase buff duration" Cap 3 Increment 0.5 Cost 150 AllowPlayerClass Soldier AllowedWeapons { Classname tf_weapon_buff_item } } //////////////// /// Demoman /// ////////////// Demoman_Eyelander_Regen { Name "Each Decapitation Gives Passive HP Regen" Attribute "add cond on kill" Cap 65 Increment 65 Cost 400 AllowPlayerClass Demoman AllowedWeapons { Itemname "The Infinity Eyelander" } SecondaryAttributes { "add cond on kill duration" 0.5 } OnApply { Output "!activator,$AddCond,65 1,0" Output "!activator,SetHealth,10000,1" } } ///////////// /// Heavy /// //////////// Heavy_Primary_Rage { Name "Test" Description "test desc" Attribute "non economy" Cap 1 Increment 1 Cost 100 AllowPlayerClass HeavyWeapons AllowedWeapons { Slot Primary } } //////////////// /// Engineer /// //////////////// Engineer_Medieval_Masher_Building_Max_Level { Name "Max Building Level" Attribute "building max level" Cap 3 Increment 1 Cost 400 AllowPlayerClass Engineer AllowedWeapons { Itemname "The Medieval Masher" } } Engineer_Airborne_Accelerator_Stun_Enemies { Name "Stun enemies when you land" Attribute "falling_impact_radius_stun" Cap 1 Increment 1 Cost 400 AllowPlayerClass Engineer AllowedWeapons { Itemname "The Airborne Accelerator" } } Engineer_Airborne_Accelerator_Stun_Enemies { Name "Able to re-launch while already in-flight " Attribute "thermal_thruster_air_launch" Cap 1 Increment 1 Cost 400 AllowPlayerClass Engineer AllowedWeapons { Itemname "The Airborne Accelerator" } } ////////////// /// Sniper /// ////////////// Sniper_FireArrow_Magic { Name "Magic Fire Arrows" Description "Try firing arrows. Ignites target and marks for death for 8 seconds." Attribute "add cond when active" Cap 65 Increment 65 Cost 100 Tier 1 DisallowedUpgrade { Upgrade Sniper_IceArrow_Magic } AllowedWeapons { Itemname "The Magic Bow" } SecondaryAttributes { "Set DamageType Ignite" 1 } OnUpgrade { // OutPut "!activator,$RemoveItemAttribute,add cond when active|0,0" OutPut "!activator,$Regenerate,,0" OutPut "@c@!activator,$SetProp$m_bArrowAlight,1,0.1" } } Sniper_IceArrow_Magic { Name "Magic Ice Arrows" Description "Freezes target for up to 4 seconds." Attribute "add damage type" Cap 16384 Increment 16384 Cost 100 Tier 1 DisallowedUpgrade { Upgrade Sniper_FireArrow_Magic } AllowedWeapons { Itemname "The Magic Bow" } SecondaryAttributes { // "add damage type" 16384 "add cond when active" 78 "remove damage type" 2 "add cond on hit" 121 "add cond on hit duration" 1 "set turn to ice" 1 "attach particle effect" 173 } OnUpgrade { // OutPut "!activator,$RemoveItemAttribute,add cond when active|0,0" OutPut "@c@!activator,$SetProp$m_bArrowAlight,0,0" OutPut "!activator,$Regenerate,,0" } } Sniper_FireArrow_Afterburn { Name "Afterburn+" Attribute "weapon burn dmg increased" Cap 3 Increment 0.5 Cost 100 Tier 2 DisallowedUpgrade { Upgrade Sniper_IceArrow_Magic } AllowedWeapons { Itemname "The Magic Bow" } SecondaryAttributes { } } } ExtraLoadoutItems // Extra loadout items available after typing !missionitems in chat { AllowEquipOutsideSpawn 1 Misc // Extended syntax, Item slot to use { Item "Basic Armor" Cost 100 AllowedMinWave 1 AllowedMaxWave 2 AllowRefund 1 } Head { Item "The Dark Falkirk Helm" Cost 200 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 1 } Misc { Item "Mega Armor" Cost 200 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 1 } Misc { Item "The Advanced Apollo" Cost 200 AllowedMinWave 1 AllowedMaxWave 55 AllowRefund 1 } Misc2 { Item "Sandvich Ghost" Cost 200 AllowedMinWave 1 AllowedMaxWave 55 AllowRefund 1 } Misc2 { Item "Dispenser Backpack" Cost 100 AllowedMinWave 1 AllowedMaxWave 55 AllowRefund 1 } Misc2 { Item "Dispenser Ghost" Cost 100 AllowedMinWave 1 AllowedMaxWave 55 AllowRefund 1 } Action { Item "Spellbook INVICTUS1" Cost 100 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 1 } Action { Item "Spellbook CREPITUS1" Cost 100 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 1 } Action { Item "Spellbook FULUMENUS1" Cost 100 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 1 } Action { Item "Spellbook BOMBINOMICON" Cost 10 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 1 } Head { Item "Alakablamicon" Cost 100 AllowedMinWave 2 AllowedMaxWave 55 AllowRefund 0 } } }